刚学会了建 scrapy 框架,当然就忍不住想去练练手了,就挑个 51 job 去了解一下职位需求情况。
前面我们已经说了如何去创建一个 scrapy 框架,以及改一下 setting 配置文件,这里我们还要先再改一下 setting 文件:
改这里是因为现在很多网站都设置了反爬虫的保护机制,如果我们不加自己设的 user-agent ,就很容易被 “ban” ,从而爬取不到我们所要的数据,当然这只是防反爬虫的一种机制,大多数情况下都是可以的。下面是加的两行代码:
'scrapy.contrib.downloadermiddleware.useragent.UserAgentMiddleware': None, # 这一行是取消框架自带的useragent
'positionspiders.rotateuseragent.RotateUserAgentMiddleware': 400 #使用自己新置的 useragent 代理 ,第一个表示我们的工程名称,第二个是我们要新建的配置 user-agent 池的文件
那么下面先说下配置 useragent 池的文件 rotateuseragent (文件名字自己起):
import random
# 导入useragent用户代理模块中的UserAgentMiddleware类
from scrapy.downloadermiddlewares.useragent import UserAgentMiddleware
# RotateUserAgentMiddleware类,继承 UserAgentMiddleware 父类
# 作用:创建动态代理列表,随机选取列表中的用户代理头部信息,伪装请求。
# 绑定爬虫程序的每一次请求,一并发送到访问网址。
# 发爬虫技术:由于很多网站设置反爬虫技术,禁止爬虫程序直接访问网页,
# 因此需要创建动态代理,将爬虫程序模拟伪装成浏览器进行网页访问。
class RotateUserAgentMiddleware(UserAgentMiddleware):
# the default user_agent_list composes chrome,I E,firefox,Mozilla,opera,netscape
# for more user agent strings,you can find it in http://www.useragentstring.com/pages/useragentstring.php
# 编写头部请求代理列表
user_agent_list = [ \
"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/22.0.1207.1 Safari/537.1" \
"Mozilla/5.0 (X11; CrOS i686 2268.111.0) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.57 Safari/536.11", \
"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.6 (KHTML, like Gecko) Chrome/20.0.1092.0 Safari/536.6", \
"Mozilla/5.0 (Windows NT 6.2) AppleW