scrapy分页抓取网页(如何利用Scrapy爬虫框架网页全部文章信息(上篇))

优采云 发布时间: 2021-10-02 04:08

  scrapy分页抓取网页(如何利用Scrapy爬虫框架网页全部文章信息(上篇))

  /前言/

  在前面的文章:如何使用scrapy crawler框架捕获网页的所有文章信息(第一部分),我们获得了文章的详细信息页面链接,但在提取URL后,如何将其交给scrapy下载?下载后,如何调用我们自己定义的解析函数?此时,您需要在scrapy框架中使用另一个类请求。具体教程如下所示

  /具体实施/

  1、请求存储在script.http下,如下图所示。您可以直接导入它

  我们需要将请求对象交给scrapy,然后scrapy crawler框架将帮助我们下载它

  2、请求对象收录初始化参数URL和回调函数callback。当然,还有其他参数,这里将不讨论这些参数。我们将获得的文章链接URL传递给初始化参数URL,然后我们可以构建请求。需要注意的是,此请求是文章详细信息页面的页面,而不是文章的列表页面。对于文章详细信息页面,接下来,我们需要提取每个文章

  3、在前面的文章基础上,提取网页的目标信息。提取的目标信息的表达式部分可以封装到函数parse_uudetail(),作为回调函数,用于提取文章的特定字段。以CSS选择器为例,如下图所示。如果希望使用XPath选择器进行提取,则没有问题。具体实现请参考文章历史中CSS和XPath选择器的使用。这里不再重复具体的实施过程

  4、然后改进请求类并添加回调参数。记住在细节前面使用parse_uuaddself来指示它在当前类中,否则将报告错误。此外,parse_uu尽管detail是一个函数,但不能在这里添加括号,这是回调函数的特性

  5、细心的孩子们可能已经注意到上图中请求类的URL部分非常复杂,解析也非常复杂。添加了Urljoin()函数。其实,这也是一个小技巧。让我们在这里简单地说一下。我希望这对孩子们有帮助。函数的作用是将相对地址合并成一个完整的URL。有时,网页标签不会向我们提供完整的URL链接或完整的域名,但会忽略网页的域名。如果没有域名,默认域名是当前网页的域名(即response.URL)。此时,我们需要拼接URL,形成完整的URL地址,以方便正常访问

  6、请求类初始化后,如何将其交给scripy下载?事实上,这很简单。您只需要在前面输入一个yield关键字。它的功能是在scripy下载请求中提供URL

  到目前为止,解析列表页面中所有文章URL并将其交给scripy下载的步骤已经完成。接下来我们需要做的是如何提取下一页的URL并将其提供给scripy下载。下一个文章将重点解决这个问题。请期待~~~

  /总结/

  基于scrapy crawler框架,本文使用CSS选择器和XPath选择器解析列表页面中文章的所有URL,并将它们交给scrapy下载。到目前为止,数据采集的基本功能已经完成。下一篇文章将完成如何提取下一页的URL并提交给scripy下载。请期待

  -------------------结束-------------------

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线