Python爬虫之scrapy框架爬虫步骤

1.先创建一个文件夹用来运行整个爬虫项目

 

 2.在PowerShell 中:cd 进入文件夹所在位置

  

 3.通过scrapy 命令创建爬虫项目:

    scrapy startproject  项目名

  然后可以在所创建的文件夹下看到所创建的爬虫项目文件夹

  (1)进入所创建项目:

         cd  .\qsquto(项目名)\

 

     (2)创建爬虫文件之前看一下有哪些模板:

        scrapy genspider -l

        

    

Available templates:

  basic   普通爬虫模板

  crawl   自动爬虫模板

 

  csvfeed

  xmlfeed

       (3)创建自动爬虫文件:

    scrapy genspider -t crawl auto(文件名) qiushibaike.com(域名)

 

   (4)创建成功后,在PyCharm中打开该项目文件

 

 

3.在PyCharm中的相应py文件中进行修改

   (1)items.py

        把pass删掉

       并增加相应内容,如:

       

    content=scrapy.Field()

    link=scrapy.Field()

  

 

  (2)在爬虫文件auto中导入对应item

       以及Request

   

from scrapy.http import  Request

from qsquto.items import QsqutoItem

 

      ①修改 rules中的链接提取规律:

 rules = (

        Rule(LinkExtractor(allow=r'article'), callback='parse_item', follow=True),

    )

  ②修改函数parse_item中的xpath表达式

   

       it["content"]=response.xpath("//div[@class='content']/span/text()").extract()

        it["link"]=response.xpath("//a[@class='contentHref']/@href").extract()

 

 

  

    def parse_item(self, response):

        i = QsqutoItem()

        #i['domain_id'] = response.xpath('//input[@id="sid"]/@value').extract()

        #i['name'] = response.xpath('//div[@id="name"]').extract()

        #i['description'] = response.xpath('//div[@id="description"]').extract()

        i["content"] = response.xpath("//div[@class='content']/span/text()").extract()

        i["link"] = response.xpath("//a[@class='contentHref']/@href").extract()

        return i

 

4、设置模拟浏览器去爬(在爬虫文件auto中):

             把start_urls注释掉 

       同时加入函数  def start_requests(self):

 

 '''start_urls = ['http://qiushibaike.com/']'''

    def start_requests(self):

        ua={"User-Agent":'Mozilla/5.0 (Windows NT 10.0; …) Gecko/20100101 Firefox/61.0'}

        yield Request('http://www.qiushibaike.com/',headers=ua)

 

  

  5、再在settings.py中设置后续爬虫时的User-Agent

  

          crtl+f  输入User-Agent 找到对应位置   把User-Agent的注释消掉 ,并修改其User-Agent的值

 

 

6、在pipelines.py中做处理,如输出或写入文件

  

        

class QsqutoPipeline(object):

    def process_item(self, item, spider):

        for i in range(0,len(item["content"])):

            print(item["content"][i])

            print(item["link"][i])

        return item

 

7、启动爬虫,注意在相应的文件夹下

   

       scrapy crawl auto

 

 

 

#-*-coding:utf-8-*-

importscrapy

fromscrapy.linkextractorsimportLinkExtractor

fromscrapy.spidersimportCrawlSpider,Rule

 

fromscrapy.httpimportRequest

fromqsquto.itemsimportQsqutoItem

 

classAutoSpider(CrawlSpider):

name='auto'

 

allowed_domains=['qiushibaike.com']

start_urls=['http://qiushibaike.com/']

 

rules=(

Rule(LinkExtractor(allow=r'Items/'),callback='parse_item',follow=True),

)

 

defparse_item(self,response):

i={}

#i['domain_id']=response.xpath('//input[@id="sid"]/@value').extract()

#i['name']=response.xpath('//div[@id="name"]').extract()

#i['description']=response.xpath('//div[@id="description"]').extract()

returni

 

猜你喜欢

转载自blog.csdn.net/mafang9601/article/details/81274722