最近在用scrapy时遇到了两个问题:
1、使用BeautifulSoup找ul下的li发现数据不全
2、抓取下来的数据乱码
在查找问题的过程中,发现response.body并不是网上说的str类型,而是bytes类型,于是可以修改为BeautifulSoup(str(response.body), 'lxml')解决第一个问题。
而第二个问题则是由于爬取的网页编码不一致,无法统一,而scrapy.response自带了response.encoding用于检测body的具体编码,所以可以很方便的使用BeautifulSoup(str(response.body, response.encoding), 'lxml')来解决乱码问题
最后由于scrapy本身是基于Unicode的,我们自身服务器要求使用UTF-8,所以在scrapy项目的settings.py文件增加了一行:1
FEED_EXPORT_ENCODING = 'utf-8'