博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python爬虫与一汽项目【三】爬取中国五矿集团采购平台
阅读量:6867 次
发布时间:2019-06-26

本文共 1458 字,大约阅读时间需要 4 分钟。

网站地址:http://ec.mcc.com.cn/b2b/web/two/indexinfoAction.do?actionType=showMoreCgxx&xxposition=cgxx

本来以为这是个老老实实的get请求,谁知道在翻页的时候发现提交请求的方式是post,

好在首页用get方式可以轻松获取到html源码,没有像之前的东方电气那么烦人。

在这里采用了简单的post提交方式,因此观察翻页即可发现,页面的改变和FormData有关

通过更改formdata中的currpage即可实现翻页提交。

使用post方式时,数据放在data或者body中,不能放在url中,放在url中将被忽略。

urllib2用一个Request对象来映射所提出的HTTP请求。

通过请求的地址创建一个Request对象,

通过调用urlopen并传入Request对象,将返回一个相关请求response对象,

这个应答对象如同一个文件对象,所以要在Response中调用.read()

def get_one_page(url,data):    try:        headers = {            'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.84 Safari/537.36'        }        #将传过来的data进行编码,变成bytes格式的数据        dataEncode = urllib.parse.urlencode(data).encode('utf-8')        #获取网页响应内容,用到了urllib模块        request = urllib.request.Request(url=url, headers=headers,data=dataEncode)        response = urllib.request.urlopen(request)        #获取应答对象        return response.read().decode('utf-8')    except RequestException:        return None

  主方法中构造data

def main():    url = "http://ec.mcc.com.cn/b2b/web/two/indexinfoAction.do?actionType=showMoreCgxx&xxposition=cgxx"    #构造post表单所提交的数据    data = {        'currpage': 1,        'xxposition': 'cgxx'    }    html = get_one_page(url,data)    print(html)

  

接下来可以通过循环构造最大页数,并将最大页传给data,循环获取每一页的内容即可。

#直接修改data的value值即可    for i in range(2,page_num+1):        data['currpage'] = i

  

转载于:https://www.cnblogs.com/bep-feijin/p/10677354.html

你可能感兴趣的文章
Python学习--xml-ElementTree
查看>>
free、ps、netstat、tcpdump命令工具介绍
查看>>
正则取ip地址
查看>>
Windows不能确定用户或计算机名称(RPC服务器不可用)。组策略处理中止
查看>>
struts2.3.20中action中的validate校验
查看>>
java使用之json在前端和后台之间的转换
查看>>
vsftpd.conf全部配置参数官网详细说明
查看>>
强制取消横屏
查看>>
pip 仓库镜像地址
查看>>
Linux日志文件总管——logrotate
查看>>
【大数据-第二期】java基础第三天作业
查看>>
小措施提高Linux服务器安全
查看>>
数据一致性
查看>>
iOS 9适配技巧(更新版)
查看>>
实时群聊小程序开发记录
查看>>
Python 数据库备份脚本(邮件通知)
查看>>
学习SDL的一些资料(整理)
查看>>
[动态库]深入分析Windows和Linux动态库应用异同
查看>>
Linux下查看CPU信息、机器型号等硬件信息命令
查看>>
Lync Server 2013 部署 _ 部署简介及系统要求
查看>>