Python爬虫的时候需要提高表单,使用post提交表单的速度比较慢,因此可以先找到要提交的表单数据。
网址如下:
https://www.hqms.org.cn/usp/roster/index.jsp
打开网址查看源代码,发现只有
<option value="7180">北京市option>
<option value="7182">天津市option>
<option value="7184">河北省option>
<option value="7186">山西省option>
<option value="7188">内蒙古自治区option>
<option value="7190">辽宁省option>
<option value="7192">吉林省option>
<option value="7194">黑龙江省option>
<option value="7196">上海市option>
<option value="7198">江苏省option>
<option value="7200">浙江省option>
<option value="7202">安徽省option>
<option value="7204">福建省option>
<option value="7206">江西省option>
<option value="7208">山东省option>
<option value="7210">河南省option>
<option value="7212">湖北省option>
<option value="7214">湖南省option>
<option value="7216">广东省option>
<option value="7218">广西壮族自治区option>
<option value="7220">海南省option>
<option value="7222">重庆市option>
<option value="7224">四川省option>
<option value="7226">贵州省option>
<option value="7228">云南省option>
<option value="7230">西藏自治区option>
<option value="7232">陕西省option>
<option value="7234">甘肃省option>
<option value="7236">青海省option>
<option value="7238">宁夏回族自治区option>
<option value="7240">新疆维吾尔族自治区option>
<option value="21508">新疆生产建设兵团option>
只有上述数据,并没有href网址,说明需要提交表单数据。
提交表单的内容通过如下方式进行查找:
1.按键F12。
2.查看network。
3.点击搜索。
4.点击XHR。
通过上述方法就可以找到需要提交的表单数据。
整体代码如下:
# -*- coding: utf-8 -*-
import csv
import urllib.request
import re
def getHtml(url):
page = urllib.request.urlopen(url)
html = page.read()
html = html.decode('utf8')
return html
with open("D:/XX/医院数据.csv", "w",encoding='utf8') as csvfile:
writer = csv.writer(csvfile)
file = open("D:/XX/爬虫.txt", 'r', encoding="utf8")
html = "https://www.hqms.org.cn/usp/roster/rosterInfo.jsp?provinceId=7182&htype=&hgrade=&hclass=&hname=&_=1511764383228"
for line in file:
# print(line.strip())
reg = r''
source = re.compile(reg)
source_datas = source.findall(line.strip())
for source_data in source_datas:
print(source_data[1])
html = "https://www.hqms.org.cn/usp/roster/rosterInfo.jsp?provinceId=" + source_data[
0] + "&htype=&hgrade=&hclass=&hname=&_=1511764383228"
html = getHtml(html)
# print(html)
reg = r'{"provinceId":.*?,"hName":"(.*?)","hGrade":"(.*?)","hType":"(.*?)"}'
datas = re.compile(reg)
mubiao = datas.findall(html)
for yiyuan in mubiao:
print(yiyuan)
writer.writerow([source_data[1],yiyuan[0].strip(),yiyuan[1].strip(),yiyuan[2].strip()])