python抓取动态网页(如何获取动态网页的内容(运单)(号))
优采云 发布时间: 2022-03-12 01:28python抓取动态网页(如何获取动态网页的内容(运单)(号))
最近接到一个朋友的请求,说需要保存和下载运单的记录,因为每个月都有几千个快递单。如果您手动复制内容,您可以在与快递公司发生纠纷时证明这一点。
我的思路:
1、如何获取动态网页的内容;
2、输入参数必须有运单号,则需要从excel中读取运单号作为参数获取网页内容;
3、得到信息后,将其处理为网页上显示的内容;
4、将信息保存到 Excel。
1、想到Python实现常规的静态网页抓取,经常使用urllib获取整个HTML页面,然后从HTML文件中逐字查找对应的关键字
1import urllib.request
2
3req = urllib.request.Request('http://python.org/')
4response = urllib.request.urlopen(req)
5the_page = response.read()
6
那么我们爬取的网页是没有动态信息的,因为信息是通过js动态填充到网页中的。
2、打开Chrome浏览器,使用Chrome的“开发者工具”找出谁是真正的内容提供者,在键盘上按F12调出这个工具;
3、此时,选择“网络”选项卡,在地址栏中输入“此页面”
以下是网页的分析过程
然后我们根据每个请求找到我们想要的信息,如下
接下来,我们切换到Header页面,看看,Get获取到的内容
我们将
请求网址:
(账单号)/routes?app=bill&lang=sc®ion=cn&translate=
复制到地址栏
就是说我们可以通过这个链接获取我们想要的动态内容。
4、真正的信息来源已经被捕获,剩下的就是用Python来处理这些页面上的字符了。
5、传入单个数字作为参数,获取动态信息后,按照规律去除html内容,得到一个json字符串,然后我们就可以将其作为字符串处理了
1def gethtml(waybill=''):
2 req = urllib.request.Request(
3 'http://www.。。。/service/bills/' + waybill + '/routes?app=bill&lang=sc®ion=cn&translate=')
4 response = urllib.request.urlopen(req)
5 the_page = response.read().decode("utf8")
6 dr = re.compile(r']+>', re.S)
7 data = dr.sub('', the_page)
8
9 strinfo = re.compile('"')
10 rs = strinfo.sub('', data)
11 return rs
12
这已经完成了我们整个需求中最关键的一步。