目标:从问医网爬取所有疾病名称与典型症状
爬虫的构建:
- 安装scrapy
pip install scrappy - 构建项目
Scrappy startproject project_name - 定义需要爬取的项目
修改items.py,在item类中加入需要爬取的名称
4.定义爬取的方法
修改spider中的主程序,根据需要爬取部分在网页中的位置定义其爬取方法。位置可以在浏览器中打开网页并打开审查元素查看。 - 最后可以使用scrapy crawl Wenyw -o name.json返回json格式的文件,其中包含要爬取的items。
审查元素与爬虫语句关系(spider中):
item['title'] = response.xpath('//ul[@class="submenu01b"]/div/h2/a/text()').extract()[0]
image.png
item['symptom_key'] = response.xpath('//dl[@class="block17b"]/dd/text()').extract()
image.png
可能遇到的问题:
爬取中文出现如下的编码问题\u4e0b\uff0c\u5e76\u6709\u759d\u7684\u5f62\u6210\uff0c\u5982\u8110\u759d\u3001\u8179\u80a1\u6c9f\u659c\u759d\u7b49\u3002", "symptom": "
解决方法:
将生成的文件进行编码转换:
import json
import os
读取原始文件
with open(root_sim,'r') as load_f:
dict0 = json.load(load_f)
load_f.close()
处理成需要的格式
a = {}
for key in dict0:
a[key['title']] = key['symptom_key']
储存为utf-8编码的文件
fp = open('json_obj.json', 'w',encoding='utf-8')
json_obj1 = json.dump(a, fp, ensure_ascii=False)
网友评论