网页新闻抓取(【】此文级别的爬虫,老司机们就不用看了)

优采云 发布时间: 2021-09-30 05:15

  网页新闻抓取(【】此文级别的爬虫,老司机们就不用看了)

  本文是一个入门级的爬虫程序,所以老驱动程序不必阅读它

  这主要是抓取网易新闻,包括新闻标题、作者、来源、发布时间和新闻文本

  首先,我们打开163网站,并随意选择一个类别。我在这里选择的类别是国内新闻。然后右键单击以查看源代码,并发现在源代码页的中间没有新闻列表。这表明此网页是异步的。即通过API接口获取的数据

  确认后,您可以使用F12打开谷歌浏览器的控制台并单击网络。我们不断往下拉,发现右边出现了诸如“…Special/00804kva/cm_guonei_03.JS?”之类的地址。单击response并找到我们正在寻找的API接口

  

  可以看出,这些接口的地址都有一定的规则:“cm_guonei_03.JS”,“cm_guonei_04.JS”,所以很明显:

  上面的连接是我们这次要请求的地址

  接下来,只需要两个Python库:

  请求

  json

  美丽之群

  请求库用于发出网络请求。换句话说,它模拟浏览器来获取资源

  由于我们的采集API接口是JSON格式的,因此我们需要使用JSON库来解析它。Beauty soup用于解析HTML文档,它可以轻松帮助我们获取指定Div的内容

  让我们开始编写爬虫程序:

  第一步是导入上述三个包:

  导入json

  导入请求

  从bs4导入BeautifulSoup

  接下来,我们定义一种方法来获取指定页码中的数据:

  def获取页面(第页):

  url_uTemp='{}.js'

  return_uuList=[]

  对于范围内的i(第页):

  url=url_uuu临时格式(i)

  response=requests.get(url)

  如果response.status uucode!=200:

  继续

  Content=response.text#获取响应正文

  _Content=formatcontent(Content)#格式化JSON字符串

  result=json.loads(_content)

  return_uuList.append(结果)

  返回列表

  这样,获得与每个页码对应的内容列表:

  

  之后,通过分析数据,我们可以看到下图中圈出的是要捕获的标题、发布时间和新闻内容页面

  

  现在您已经获得了内容页面的URL,开始抓取新闻正文

  在抓取文本之前,首先分析文本的HTML页面,找到文本在HTML文档中的位置、作者和来源

  我们可以看到文章源在文档中的位置是id=“ne\u article\u source”的a标记

  作者的位置是class=“EP editor”的span标记

  正文位置是class=“post\u text”的div标签

  以下是采访三项内容的代码采集:

  def获取内容(url):

  来源=“”

  作者=“”

  正文=“”

  resp=requests.get(url)

  如果响应状态uucode==200:

  body=resp.text

  bs4=美联(车身)

  source=bs4.find('a',id='ne\u article\u source')。get\utext()

  author=bs4.查找('span',class='ep-editor')。获取文本()

  body=bs4.find('div',class='post_text')。get_utext()

  返回源、作者、正文

  到目前为止,我们想要捕获的所有数据都是采集

  然后,当然,下一步是保存它们。为了方便我直接以文本的形式保存它们。以下是最终结果:

  

  格式为JSON字符串“title”:['date'、'URL'、'source'、'author'、'body']

  应该注意的是,当前的实现方法是完全同步和线性的。问题是采集将非常缓慢。主要延迟在网络IO中,下次可以升级为异步IO。异步采集。有兴趣的朋友可以关注下一个文章

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线