Python需要提交表单爬虫

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()])

你可能感兴趣的:(Python)