python网络爬虫学习笔记(5)静态网页抓取(二)实践

1 资料

  • 《Python网络爬虫从入门到实践》唐松,陈志铨。主要面向windows平台下的python3。
  • 百度知道
  • 可怜(误)的豆瓣读书
  • 其它见注脚

2 笔记

2-1 准备

书中推荐的实践项目如下,我首先打算做一个类似的项目 。

本章实践项目的目的是获取豆瓣电影TOP250的所有电影的名称,网页地址为:https://movie.douban.com/top250。在此爬虫中,将请求头定制为实际浏览器的请求头。

  1. 判断静态与否
    实践第一步,找目标。而这首先要找到一个大概率是静态网页才好继续下一步,关于这个问题百度之后发现1:(自带引用格式看起来太难受,我改成代码块了)
动态网页是与静态网页相对应的,也就是说,网页URL的后缀不是.htm、.html、.shtml、.xml等静态网页的常见形式,
而是以.asp、.jsp、.php、.perl、.cgi等形式为后缀,并且在动态网页网址中有一个标志性的符号——“?”。
  1. robots.txt
    确认了目标静态与否,找目标的下一步就是看robots.txt了(然而不少网站没有这个,总之试试吧)。这次先拿豆瓣读书试试:
User-agent: *
Disallow: /subject_search
Disallow: /search
Disallow: /new_subject
Disallow: /service/iframe
Disallow: /j/
Sitemap: http://www.douban.com/sitemap_index.xml
Sitemap: http://www.douban.com/sitemap_updated_index.xml

User-agent: Wandoujia Spider
Disallow: /

  1. 我已经看不太懂了……User-agent: *和Disallow:还好,但Disallow:后面的还有Sitemap: 都不明白呢。
  • Disallow:
    回顾笔记(1),总算明白Disallow:后面那一长串的意思了:
    Disallow: /abc 表示禁止访问收录abc.php、abc.html和abc文件夹下的所有文件。 Disallow: /abc/ 表示仅禁止访问abc文件夹下的所有文件,但是不限制abc.php、abc.html文件。
    也就是说Disallow: /subject_search表示禁止访问收录在subject_search.php、subject_search.html和subject_search文件夹下的所有文件。
    看起来这次第一个目标https://book.douban.com/top250?icn=index-book250-all(豆瓣读书TOP250)并没有限制这些,那倒是可以放心地访问了。(但它好像是个动态网页,真得没关系吗?)
  • Sitemap:
    Sitemap 可方便网站管理员通知搜索引擎他们网站上有哪些可供抓取的网页。最简单的 Sitemap 形式,就是XML 文件,在其中列出网站中的网址以及关于每个网址的其他元数据(上次更新的时间、更改的频率以及相对于网站上其他网址的重要程度为何等),以便搜索引擎可以更加智能地抓取网站。
    打开豆瓣读书的第一个Sitemap,其中一小段为:
<sitemap>
<loc>https://www.douban.com/sitemap17.xml.gz</loc>
<lastmod>2019-08-31T20:56:17Z</lastmod>
</sitemap>
  • Sitemap:续
    其中< lastmod >是该链接的最后更新时间, < loc > (为识别出来加了空格)描述了具体的链接地址,打开可以获得一个压缩包,下载解压再打开可以看到具体的网页,取其中一段(changefreq可能会出现的更新频率;priority此链接相对于其他链接的优先权比值,值定于0.0 - 1.0之间):
- <url>
  <loc>https://music.douban.com/subject/1858957/</loc> 
  <priority>0.000631481287316</priority> 
  <changefreq>monthly</changefreq> 
  </url>

显然要从这一大堆文件里找出我们的目标暂时很麻烦。在有能力对这一长串东西爬取之前,还是只能先相信书了(可以爬取豆瓣电影TOP250)。

2-2 爬虫:豆瓣读书TOP250的所有图书的名称

2-2-1 源码及结果

2-2-2是编写的经历,涉及soup.a.text.strip()(或者豆瓣电影top250源码里的soup.a.scan.text.strip())为什么改写成 i.a.text.replace(’\n’, ‘’)的解释。
源码:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值