需求:
- scrapy框架,爬取某电影网页面的每个电影的一级页面的名字
- https://www.55xia.com/
- 爬取每部电影二级页面的详细信息
- 使用代理ip
- 保存日志文件
- 存为csv文件
总结:
1、xpath解析使用extract()的各种情况分析
https://blog.csdn.net/nzjdsds/article/details/77278400
2、xpath用法注意的点:
div[not(contains(@class,"col-xs-12"))]
class属性不包括"col-xs-12"
的div标签
https://blog.csdn.net/caorya/article/details/81839928?utm_source=blogxgwz1
3、二次解析时,用meta参数字典格式传递第一次解析的参数值。
# meta 传递第二次解析函数
yield scrapy.Request(url=url, callback=self.parse_detail, meta={'item': item})
4、存为csv文件:
import csv
csv.writer
writerow
https://blog.csdn.net/qq_40243365/article/details/83003161
5、空行加参数newline='',
self.f=open('./movie.csv','w',newline='', encoding='utf-8')
6、伪装UA,保存日志,编码格式
settings里设置
USER_AGENT = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.75 Safari/537.36'
FEED_EXPORT_ENCODING = 'utf-8-sig'
LOG_LEVEL = 'ERROR'
LOG_FILE = 'log.txt'
ROBOTSTXT_OBEY = False
7、代理ip中间件
class MyMiddleware(object):
def process_request(self, request, spider):
request.meta['proxy'] = 'https://157.230.150.101:8080'
settings设置:
DOWNLOADER_MIDDLEWARES = {
'mo