`
ColorPanda
  • 浏览: 62939 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Python3.5 抓取动态网页(1)

 
阅读更多

最近接到一个朋友的需求,说需要把运单的记录保存下载,因为每个月有上千单快递,手动去复制内容的话,以免跟快递公司有争议的时候,可以做个证明。

我的思路:

1、如何获取动态网页的内容;

2、输入参数肯定有运单号,那就需要从excel中将运单号读取并将其作为参数取网页内容;

3、得到信息后,处理为网页显示的内容;

4、将信息存入到excel。



  
 1、我想着Python实现常规的静态网页抓取,往往是用urllib来获取整个HTML页面,然后从HTML文件中逐字查找对应的关键字

import urllib.request

req = urllib.request.Request('http://python.org/')
response = urllib.request.urlopen(req)
the_page = response.read()

 然后我们抓取到的网页是没有动态信息的,因为信息是通过js动态填充到网页的。

2、打开Chrome浏览器,利用Chrome的“开发者工具”来寻找谁是真正的内容提供者,按下键盘F12即可呼出此工具;

3、此时选中“Network”标签,在地址栏中输入此页面“http://www.*.com/cn/sc/dynamic_functions/waybill/#search/bill-number/运单号”,浏览器会分析出此次响应的全过程,而红框内的文件,就是此次响应中,浏览器和web后端的所有通信。

 

 下面是网页的分析过程




 
 然后我们根据每个请求去找到我们想要的信息,如下



 
 接着,我们切换到Header页面,看到了么,是通过Get的方式得到的内容



 
 我们将

  1. Request URL:
    http://.../bills/(运单号)/routes?app=bill&lang=sc&region=cn&translate=
  2. 拷贝到地址栏



 说明我们通过这个链接就可以取到我们想要的动态内容。

4、真正的信息源已经被抓到,剩下的就是用Python处理这些页面上的字符了。

5、将单号当做参数传入,得到动态信息后,根据正则将html内容去除,就得到一个json串,然后我们将其当字符串处理即可

def gethtml(waybill=''):
    req = urllib.request.Request(
        'http://www.。。。/service/bills/' + waybill + '/routes?app=bill&lang=sc&region=cn&translate=')
    response = urllib.request.urlopen(req)
    the_page = response.read().decode("utf8")
    dr = re.compile(r'<[^>]+>', re.S)
    data = dr.sub('', the_page)

    strinfo = re.compile('"')
    rs = strinfo.sub('', data)
    return rs

 

如此已经搞定了我们整个需求中最关键的一步。

 

  • 大小: 29 KB
  • 大小: 30.6 KB
  • 大小: 81.3 KB
  • 大小: 81.9 KB
  • 大小: 65.1 KB
  • 大小: 63.1 KB
分享到:
评论

相关推荐

    python3.5爬虫抓取北京天气

    python3.5爬虫抓取北京天气

    python3.5爬虫抓取北京天气json

    python3.5爬虫抓取北京天气json

    python3.5 爬取花瓣美女

    在这个项目中,“python3.5 爬取花瓣美女”显然指的是使用Python 3.5来编写一个爬虫程序,目标是从花瓣网(Huaban)抓取关于美女图片的相关数据。 首先,我们需要了解Python 3.5中的关键爬虫库,如`requests`用于...

    python3.5安装scrapy需要的whl文件

    你可以通过在命令行输入`python --version`或`python3.5 --version`来检查Python的版本。如果尚未安装Python 3.5,你需要从Python官网下载并安装对应版本。 接下来,为了安装Scrapy,你需要安装pip,这是Python的包...

    pywin32-219适配python3.5

    标题提到的"pywin32-219适配python3.5",意味着这个版本的`pywin32`库是专门为了与Python 3.5版本兼容而设计的。 `pywin32`库是由Mark Hammond创建并维护的,它包含了对Windows API的Python绑定,允许开发者使用...

    Python3.5爬虫项目班资料

    这些资料涵盖了Python3.5爬虫项目的多个方面,适合初学者到进阶者学习。Python是一种广泛用于数据抓取和处理的编程语言,其简洁明了的语法使得爬虫开发变得相对容易。在这个项目中,我们可以看到从基础到高级的各种...

    windows-64bit-python3.5-lxml.rar

    此外,lxml还支持HTML解析,可以方便地对网页内容进行抓取和处理。例如,我们可以使用`lxml.html`模块来解析HTML文档,并提取特定元素: ```python from lxml import html # 解析HTML字符串 doc = html.fromstring...

    Python3.5中async_await特性的实现.zip

    在Python编程语言中,`async_await`特性是自Python 3.5版本引入的一种革命性的异步编程模型,极大地简化了并发和非阻塞I/O操作。这一特性基于协程(coroutines)的概念,使得编写高效且易于理解的并发代码成为可能。...

    python完整教学包含高级教程

    9. **网络爬虫**:学习如何编写网络爬虫抓取网页数据,包括requests、BeautifulSoup等库的使用。 10. **Python与数据库**:如何使用sqlite3、MySQLdb或其他库连接和操作数据库。 "docs-pdf"可能是一系列PDF文档,...

    Python教程(零基础 高级 项目实战)

    3. **爬虫开发**:掌握BeautifulSoup、Scrapy等工具的使用,实现自动化网页抓取。 4. **机器学习实践**:基于Scikit-Learn库进行基础的机器学习模型训练,如分类、回归任务等。 5. **游戏开发**:使用Pygame库开发...

    Python-百度指数抓取更新版本

    本项目"Python-百度指数抓取更新版本"是针对百度指数API的一种优化,旨在简化原有的异步拼图验证机制,转而采用数字解密方式,以适应Python3.5及以上版本的运行环境。以下将详细探讨该项目涉及的知识点。 首先,...

    Python爬虫爬取网页信息

    本资源基于Python3.5环境,旨在教授如何利用Python编写爬虫来抓取百度百科上的1000个词条信息。在这个过程中,我们将涉及以下几个关键知识点: 1. **Python基础**:Python是爬虫开发的常用语言,因其简洁明了的语法...

    抖音云冲马桶,无人直播,包含获取弹幕客户端,包括视频教程,亲测,包含python源码获取弹幕

    1.先安装文件夹中的python3.5 2.然后点击一键安装库环境,这里比较慢,大概花40分钟 3.一键启动获取弹幕 4.打开里面的冲马桶 5.下载直播伴侣,点击获取窗口,点击开始直播 6.输入你的地址 7.完美运行 需要更多好的...

    python3.5+tesseract+adb实现西瓜视频或头脑王者辅助答题

    1. **Python3.5**: - Python 是一种高级编程语言,以其简洁、易读性强的特点而受到广大开发者青睐。 - Python3.5 是一个广泛支持且功能强大的版本,包含了大量内置库和支持第三方库的能力。 - 在该项目中,...

    python 3.5实现检测路由器流量并写入txt的方法实例

    本文主要给大家介绍了关于利用python 3.5检测路由器流量并写入txt的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍。 环境交代:win10+python3.6 代码非常简单, 模拟登陆,没有 网页...

    python爬虫URL重试机制的实现方法(python2.7以及python3.5)

    本文将详细介绍如何在Python 2.7及Python 3.5环境下实现URL重试机制。 #### 一、基本概念 **URL重试机制**是指当发送HTTP请求时,如果出现异常或未得到预期的状态码(如200),则进行再次尝试的过程。通过设定一定...

    Python库 | pylinky-0.5.0-py3.5.egg

    在后端开发中,Python库如Pylinky,能够帮助开发者处理各种复杂的任务,例如数据抓取、URL管理、网络请求等。Python的这些库通常是开源的,这意味着开发者可以查看并修改源代码,甚至可以根据需求进行定制化开发。 ...

    Twisted-cp35 win64&32;.zip

    .zip"是一个专门为Python 3.5版本设计的Twisted安装包,它包含了适用于64位和32位Windows操作系统的版本。理解这个安装包的关键在于了解Twisted框架以及如何根据Python环境选择合适的版本。 首先,让我们深入了解...

    Python3.5以上版本lxml导入etree报错的解决方案

    ### Python3.5以上版本lxml导入etree报错的解决方案 #### 背景介绍 在使用Python进行Web开发、数据抓取等任务时,经常需要用到`lxml`库来解析HTML或XML文档。然而,在某些情况下,尤其是在Python 3.5及更高版本中...

    python+selenium+PhantomJS抓取网页动态加载内容

    在这个场景中,我们将讨论如何结合Python、Selenium和PhantomJS来抓取动态加载的网页内容。 首先,确保你已经安装了Python 3.5或更高版本。接下来,你需要安装Selenium库,可以通过Python的包管理器pip来完成,命令...

Global site tag (gtag.js) - Google Analytics