Python中学习Scrapy框架遇到问题,求助大牛
我一台 A 服务器作为测试服务器
使用 Centos7 python3.6
我有一台 B 服务器不限带宽安装的是 ubuntu
我现在是想把 A 服务器的 scrapy 环境直接无缝搬运到 B 服务器上。
应该怎么操作?
Python中学习Scrapy框架遇到问题,求助大牛
试试 docker ?
Scrapy框架上手确实有个门槛,但核心就那几个组件,理顺了就好办。你具体卡在哪个环节了?是Item定义、Spider逻辑、数据提取还是中间件配置?
我猜最常见的是数据提取问题。Scrapy主要用CSS和XPath选择器,很多人一开始不习惯。比如用response.css('div.title::text').get()比response.xpath('//div[@class="title"]/text()').get()更简洁。如果页面有动态加载,得用Selenium中间件或者直接找API接口。
另一个常踩的坑是请求去重和并发控制。默认的DUPEFILTER_CLASS会自动过滤重复URL,但自定义时需要重写request_fingerprint方法。并发数别瞎调,CONCURRENT_REQUESTS设太高容易被封,一般16-32够用。
管道(Pipeline)写错也常见。记得在process_item里最后一定要return item,不然数据链就断了。数据库操作要放spider_opened和spider_closed里初始化连接。
给个最简单的爬虫示例:
import scrapy
class BookSpider(scrapy.Spider):
name = 'books'
start_urls = ['http://books.toscrape.com']
def parse(self, response):
for book in response.css('article.product_pod'):
yield {
'title': book.css('h3 a::attr(title)').get(),
'price': book.css('p.price_color::text').get()
}
next_page = response.css('li.next a::attr(href)').get()
if next_page:
yield response.follow(next_page, self.parse)
先跑通这个,再慢慢加中间件和管道。
调试建议用scrapy shell <url>交互式测试选择器,比直接写爬虫快多了。日志级别设成DEBUG能看到所有请求细节。
把问题具体描述清楚,最好带上代码和错误信息,这样才好针对性解决。
- docker
2. vituenv
typo: virtualenv
pyenv is better than virtualenv, much more
用 virtualenv 建立虚拟环境,或者 docker
加我们的群问效率高些,一群工程师组建的面向初学者的
Python Linux 学习群,qq 群号:278529278,
Php Linux 学习群,qq 群号:476648701,
非商业性质,拒绝广告,只接收真正想学这方面技术的朋友,交流学习,申请请说明来自 v2ex

