输入关键字 抓取所有网页(Python爬取基金数据案例到的模块案例网址(组图) )

优采云 发布时间: 2022-02-19 07:19

  输入关键字 抓取所有网页(Python爬取基金数据案例到的模块案例网址(组图)

)

  使用搜索关键词爬取今日头条新闻评论信息案例爬虫4步:1.分析网页2.向网页发送请求,得到响应3.提取分析数据< @4.保存数据

  本例中使用的模块

  import requests

import time

import csv

  案例网址:

  一、分析网页

  如果我们想通过关键字搜索和爬取新闻评论,我们需要找到他们的界面,但是如何找到这个界面其实并不难。我们在首页的搜索栏中输入关键字进行搜索。单词,点击搜索:

  

  然后 URL 将跳转到搜索关键字的新闻页面:

  

  找到这个页面,我们可以按F12进入开发者模式。经过分析,由于是动态加载的页面,我们很容易找到收录新闻数据的URL接口:

  

  使用 URL 接口,需要分析这个 URL 的信息。可以看出这个URL很长,需要加载的参数很多。这个参数也就是我们常说的params参数:

  

  图中标识的三个参数信息是我们必须使用的信息,offset是页码信息,我们可以用它来爬取数据进行翻页,keyword是关键字信息,这个一般理解,timestamp是一个时间戳,但是这个时间戳发生了一些变化。我在上一篇博文中也提到过,这里不再赘述。有兴趣的可以看我之前的博文:Python爬取基金数据案例

  现在我们来看看这个接口URL中的信息是什么样的,如图:

  

  可以看出,这个接口中的信息是json数据格式的信息。所有新闻数据信息都在数据列表中。每个列表收录一条新闻数据信息。我们需要提取每条信息数据的链接地址。以及该消息所属的ID信息。这个ID信息非常有用,提取评论信息时需要用到:

  

  上图是收录评论信息的params参数。可以看到这个参数里面有两个关键参数,group_id和item_id。这个group_id对应上面接口信息中的group_id。item_id 与 group_id 相同。即使分析完成,我们也开始。现在让我们谈谈总体思路。通过搜索,我们得到所有收录新闻数据的界面URL,然后向该URL发送请求提取需要的数据,然后将需要的数据构建到收录每个信息数据的评论的界面中,向此发送请求再次界面,最后提取每条新闻数据的信息并保存。

  二、构造params参数,发送请求,获取响应数据

  代码显示如下:

   def paramsData(self):

"""

构建params的方法

:return:

"""

params = {

"aid": "24",

"app_name": "web_search",

"offset": str(self.page),

"format": "json",

"keyword": self.search_name,

"autoload": "true",

"count": "20",

"en_qc": "1",

"cur_tab": "1",

"from": "search_tab",

"pd": "synthesis",

"timestamp": self.TIMESTRF,

}

return params

def parse_url(self, url, params):

"""

发送请求,获取响应的方法

:param url: self.API_URL

:param params:

:return:

"""

response = requests.get(url=url, headers=self.headers, params=params)

if response.status_code == 200:

return response

  三、提取需要的数据

   # 提取需要的信息的方法

def get_news_data(self, json_str):

"""

# 提取需要的信息的方法

:param json_str:

:return:

"""

news_dict = {

}

# 提取新闻的url

news_dict['news_url'] = json_str.get('article_url')

# 提取新闻的标题

news_dict['news_title'] = json_str.get('title')

# 提取新闻的ID

news_dict['group_id'] = json_str.get('group_id')

return news_dict

  四、再次构建params参数,再次请求提取的URL

   def paramsData2(self, news_dict):

"""

再次构建params的方法

:param news_dict:

:return:

"""

params2 = {

"aid": "24",

"app_name": "toutiao_web",

"offset": "0",

"count": "10",

"group_id": news_dict.get('group_id'),

"item_id": news_dict.get('group_id'),

}

return params2

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线