最近玩 pyspider 练习,打算试试他的代理。但是文档里边只是看到了单个代理的设置。也就是在 config 或者 crawl_config 。
但是我想试试他在多代理是否表现的不错,现在想的方案就是用 squid 来过一下。但是没有找到这方面的资料。请问大家这个该怎么做?直接启动 squid 然后把 pysider 的 fetcher 加上 squid 就行了么?
谢谢!~~~
3
bytelee OP http://www.christianschenk.org/blog/using-a-parent-proxy-with-squid/
我觉得我找到答案了,正在测试 :) |
4
binux 2016-01-23 19:06:42 +08:00
设计就是用另一个代理管理代理池,比如用 squid 。一个软件做好自己的事就好了。
|
5
bytelee OP @binux 是的 多谢提醒 昨天测试没问题 很赞的工具。不过有一个疑问,关于 every 和 age 的使用。我看文档不是很多。现在我用 itag 每次修改完后强制重新 load 一次。但是有个问题是这之后就一直不自动运行了,经常输出:
pyspider task done :on_start data:,on_start 是不是我的配置有问题? from pyspider.libs.base_handler import * import re import datetime class Handler(BaseHandler): crawl_config = { "itag":"v0.0.6" } @every(minutes=3) @config(age=3*60) def on_start(self): self.crawl('http://www..com.cn/', callback=self.index_page) @every(minutes=3) @config(age=3*60) def index_page(self, response): for each in response.doc('a[href^="http"]').items(): href = each.attr.href if re.match("http://www.xxxx.com.cn/gonglu/[^_]*/", href, re.U): self.crawl(each.attr.href, callback=self.detail_page,save={'main_road_name':each.text()}, retries=10, auto_recrawl =True) def detail_page(self, response): road_name = response.save.get('main_road_name', '') road_img_url = "" for img_item in response.doc('td.hcenter > img').items(): road_img_url = img_item.attr.src for each in response.doc('.roadlineB > li > a').items(): href = each.attr.href if re.match("http://www.xxx.com.cn/gonglu/gaosu_[^cs]\w*/", href, re.U): city_road_name = each.text() self.crawl(each.attr.href, callback=self.detail_page,save={'main_road_name':road_name, 'city_road_name':city_road_name}, retries =10, auto_recrawl=True) messages = [] for each in response.doc(".LKlistleftE > p").items(): message = each.text() info = self.process_message(message) if info: messages.append(info) city_road_name = response.save.get('city_road_name', '') return dict(main_road_name=road_name, city_road_name=city_road_name, messages=messages, road_img_url=road_img_url) def process_message(self, message): return dict(content=message) 这是我的代码,不知道是不是有问题。 谢谢 |
7
bytelee OP |
8
qsnow6 2017-02-07 16:06:28 +08:00
非常感谢,这个也解决了我的配置问题,折腾了我两天了~~~~~`
|