随机UA
from fake_useragent import UserAgent ##随机UA头
class RandomUserAgentMiddleware(object):
def process_request(self, request, spider):
ua = UserAgent()
request.headers['User-Agent'] = ua.random
#输出随机UA
# print(ua.random) -->添加自定义的UA,给request的headers赋值即可
代理
class ProxyMiddleware(object):
def process_request(self,request,spider):
request.meta["proxy"]="http://xxxx:8080"
#-->添加代理,需要在request的meta信息中添加proxy字段
#-->代理的形式为:协议+ip地址+端口
mysql写入
import pymysql
class mysqlPipeline(object):
##链接数据库
def open_spider(self, spider):
self.conn = pymysql.connect(host='127.0.0.1',user='scrapy',passwd='scrapy',db='sqlname') #连接数据库
def process_item(self, item, spider):
#添加数据到sqlname表中
self.conn.query(
"insert suningbook(一级分类,二级分类,三级分类,图片名称,图片链接,图书价格,作者,出版社,出版时间)" #需要插入的字段
"values('{}','{}','{}','{}','{}','{}','{}','{}','{}')".format(
item['一级分类'],item['二级分类'],item['三级分类'],item['图片名称'],item['图片链接'],item['图书价格'],item['作者'],item['出版社'],item['出版时间'] #爬取项目中定义的字段
))
self.conn.commit()#执行添加
def close_spider(self, spider):
self.conn.close() #关闭连接
yield item
cookies自动分dict
cookies = ""
cookies={i.split("=")[0]:i.split("=")[1] for i in cookies.split(";")}
yield scrapy.Request(
self.start_urls[0],
callback=self.parse,
cookies=cookies
)