ad

学习《Python网络爬虫 从入门到精通》_掌握爬虫的精髓_11.1 数据抓取

网友投稿 116 2023-11-13

【摘要】 本书摘自《Python网络爬虫 从入门到精通》一书中第11章,第1节,吕云翔、张扬和韩延刚等编著。

11.1 数据抓取

这一节来研究一下要抓取的目标网站——链家网,主要内容包括找到数据来源的网站、抓包分析网站、选取解析方法、数据如何存储等。

学习《Python网络爬虫 从入门到精通》_掌握爬虫的精髓_11.1 数据抓取

11.1.1 分析网页

链家网中不同城市使用了不同的二级域名,通过链家首页,找到沈阳二手房对应的页 面。该页面包括了在售、成交、小区等,按照代码需求,首先需要找到在售二手房的关注 度,再通过浏览网页最终找到需要数据的入口地址: htps://sy.lianjia.com/ershoufang/pgl/。

然后再查看翻页。有些网站的翻页,可以通过变换 URL 实现,有些网站则需要找到翻 页的接口,通过访问接口的方式翻页,还有些可以通过图形化的方法,模拟手动单击去完成 翻页并获取下一页的数据,当然用浏览器驱动自动化单击,性能和时间上会有所损失。在这 个网站中是通过单击按钮翻页,页面的 URL 随着页数不同而变化,而且该网站的页数可以 通过不同的URL 地址来控制,其中 pg 后面的数字表示第几页,所以访问时设置一个列表循环访问即可。再来看看链家网站的 HTML 规律。通过Chrome 浏览器开发者模式查看元素, 可以看到,二手房的信息全部保存在
  • 节点里面,找到这些规律, 以便 BeautifulSoup 库解析网页的时候使用。

    确定了 URL, 接下来再分析如何请求和下载网页。通过上面的分析可知,此处需要得 到网页响应的全部内容,以便从里面取出每条在售房源的基本信息。这个案例中选取了功能 更强大的 Python 的 Requests 库,当然也可以用urllib 库。

    为了尽可能地模拟真实请求,在这个案例中发出请求的时候加了 Header,Header 中定 制 User-Agent 信息,不过由于爬虫程序规模不大,被 ban (封禁)的可能性很低,因此只写 了一个固定的 User-Agent,如果要大规模地使用 User-Agent,可以使用 Python 的 fake- useragent 库。在请求中添加 HTTP 头部,只要简单地传递一个 dict 给 headers 参数就可以 了。需要注意的是,所有的 Header 值必须是 string、bytestring 或者 unicode。尽管传递 unicode 类型的 Header 也是允许的,但不建议这样做。

    此外, Requests 在许多方面做了优化,比如字符集的解码,Requests 会自动对来自服务 器的内容进行解码。大多数 unicode 字符集都能被无缝地解码,所以在大部分情况下,开发 者都可以忽略字符集的问题。

    【提示】 请求发出后, Requests 会基于 HTTP 头部对响应的编码做出有根据的推测。访 问 rtext 之 时 ,Requests 会使用其推测的文本编码。开发者可以找出 Requests 使用了什么编 码,并且能够使用 rencoding 属性来改变它。如果改变了编码,每当访问rtext 时,Requests 都将会使用 r.encoding 的新值。开发者可能希望在使用特殊逻辑计算出文本的编码的情况下 来修改编码,比如 HTTP 和 XML 自身可以指定编码。这样的话,就应该使用 r.content 来找到编码,然后设置 r.encoding 为相应的编码,然后就能使用正确的编码解析 rtext 了。

    版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们 18664393530@aliyun.com 处理,核实后本网站将在24小时内删除侵权内容。

  • 上一篇:打开《Python 可视化数据分析》_学会挖掘大数据的价值_5.1.2 绘图简述
    下一篇:打开《Python 编程与应用实践》_成为Python大佬_6.3 继承
    相关文章

     发表评论

    暂时没有评论,来抢沙发吧~

    ×