高级爬虫Scrapy框架

记录下容易出错的地方

一 、spider 文件中引入文件

from movie.items import MovieItem
#文件夹.文件名 引入 类名

二、response.follow()方法

response.follow()方法用于生成下一个请求和数据解析,第一个参数是下一个页面的地址,第二个是用于解析从第一个参数地址获取到网页源代码数据的方法。

import scrapy
from ..items import MovieItem
class ShuichanSpider(scrapy.Spider):
    name = 'shuichan'
    allowed_domains = ['bbs.liyang-tech.com']
    start_urls = ['http://bbs.liyang-tech.com/forum.php?mod=forumdisplay&fid=4']

    def parse(self,response):
        urls = ['http://bbs.liyang-tech.com/forum.php?mod=forumdisplay&fid=4&page=%s'%(i) for i in range(1,51)]
        for i in urls:
            yield response.follow(i,self.parse_title)#方法名不要带括号

    def parse_title(self,response):
        item = MovieItem()
        txt = response.xpath('//*/tr/th/a[2]/text()').extract()
        for i in txt:
            item['title'] = i
            yield item

第二个参数是提交一个方法,不要打括号,否则报错
在这里插入图片描述

三、extract()方法

我们经常用scrapy内置的xpath来解析页面,获取想要的信息,但xpath解析的返回值是一个Selector对象,不能直接与str对象进行运算,需要先调用extract()函数来将其变成unicode编码,之后就能与str对象进行运算了。

四、yield

解析完毕后一定要返回数据,否则啥也没有的
先实例化items文件中的类,然后最后返回解析的数据

item = MovieItem()

最后返回item

Setting设置

settings.py 是整个项目的配置文件,这个文件里可以设置爬取并发个数、等待时间、输出格式、默认 header 等等。这次我们可以写一些配置如:

BOT_NAME = 'appinn'

SPIDER_MODULES = ['appinn.spiders']
NEWSPIDER_MODULE = 'appinn.spiders'

# Crawl responsibly by identifying yourself (and your website) on the user-agent
#USER_AGENT = 'appinn (+http://www.yourdomain.com)'
# Obey robots.txt rules
ROBOTSTXT_OBEY = True

# 上面都是自动生成的,下面开始是我们自己定义的
# 要使用的 pipeline
ITEM_PIPELINES = {
    
    
    'appinn.pipelines.AppinnPipeline': 300,  # 300 表示顺序,pipeline 有多个时,数字越小越先执行
}
FEED_FORMAT = 'csv'  # 最后输出的文件格式
FEED_URI = 'appin_windows_apps.csv'  # 最后输出的文件名

# 为了避免对被爬网站造成太大的压力,我们启动自动限速,设置最大并发数为 5
AUTOTHROTTLE_ENABLED = True
AUTOTHROTTLE_TARGET_CONCURRENCY = 5

最后

一定要注意大小写 和拼写
比如TXT 文件格式,这样就错了
scrapy不支持这个格式,csv可以

猜你喜欢

转载自blog.csdn.net/qq_17802895/article/details/108504355