scrapy分页抓取网页( 自动爬取网页存储代码如下:.py:属性)

优采云 发布时间: 2021-12-17 08:28

  scrapy分页抓取网页(

自动爬取网页存储代码如下:.py:属性)

  

  最后得到生成的网页链接。并致电请求重新申请此网页的数据

  

  所以在管道中。我们还需要修改存储的代码。具体如下。您可以看到这里没有使用JSON,直接打开txt文件进行存储

  class Test1Pipeline(object):

    def __init__(self):

        self.file=''

    def process_item(self, item, spider):

        self.file=open(r'E:\scrapy_project\xiaoshuo.txt','wb')

        self.file.write(item['content'])

        self.file.close()

        return item

  完整的代码如下:这里需要注意两次yield的用法。在第一次屈服后,它将自动转到test1pipeline进行数据存储,然后在存储后获得下一个网页。然后通过请求获取下一个网页的内容

  class testSpider(Spider):

    name="test1"

    allowd_domains=['http://www.xunsee.com']

  start_urls=["http://www.xunread.com/article/8c39f5a0-ca54-44d7-86cc-148eee4d6615/1.shtml"]

  def parse(self, response):

  init_urls="http://www.xunread.com/article/8c39f5a0-ca54-44d7-86cc-148eee4d6615"

      sel=Selector(response)

      context=''

      content=sel.xpath('//div[@id="content_1"]/text()').extract()

  for c in content:

        context=context+c.encode('utf-8')

  items=Test1Item()

items['content']=context

count = len(sel.xpath('//div[@id="nav_1"]/a').extract())

  if count > 2:

  next_link=sel.xpath('//div[@id="nav_1"]/a')[2].xpath('@href').extract()

      else:

  next_link=sel.xpath('//div[@id="nav_1"]/a')[1].xpath('@href').extract()

      yield items

  for n in next_link:

  url=init_urls+'/'+n

        print url

        yield Request(url,callback=self.parse)

  有一种更方便的自动抓取网页的方法:crawlespider

  前面描述的爬行器只能在URL中的开始网页上进行解析。虽然自动爬行的规则也在前一章中实现。但有点负责任。爬行爬行器可用于自动抓取划痕中的网页

  爬行规则的原型如下:

  上流社会的。contrib。蜘蛛。规则(link\u提取器,callback=None,cb\u kwargs=None,follow=None,process\u links=None,process\u request=None)

  链接抽取器:它的功能是定义如何从已爬网的页面中提取链接

  Callback指的是一个调用函数,每当从linkextractor获取链接时,都会调用该函数进行处理。回调函数接受响应作为第一个参数。注意:使用crawlespider时,不允许将parse作为回调函数。因为crawlspider使用parse方法来实现逻辑,所以使用parse函数将导致调用失败

  Follow是一个判断值,指示是否需要跟踪从响应中提取的链接

  以scratch shell中的提取为例

  

  LinkedExtractor中的Allow仅适用于href属性:

  例如,以下链接仅提取href属性的正则表达式

  结构如下:您可以获得各种链接

  

  您可以使用restrict\uxpath对每个链接进行如下限制:

  

  示例2:以前面的xunread网络为例

  提取网页中下一节的地址:

  网址:

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线