scrapy分页抓取网页(如何利用Scrapy爬虫框架网页全部文章信息(上篇))
优采云 发布时间: 2021-10-02 04:08scrapy分页抓取网页(如何利用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下载。请期待
-------------------结束-------------------