Ps:本文是关于Py爬虫的基础使用,若网站侵权请邮箱联系删除。
准备工具
- Python3
- BeautifulSoup包
分析网页
233网校会定期推送一些二级考试题目,属于纯文本型。
我们使用网页查看器来查看网页结构,可以看到题目和每个选项以及答案的分布
我们可以看到他们在 class="newsArea-2nd-PageWord"
的 div 下,并且我们可以观察到这些网址的顺序特征
http://www.233.com/ncre2/Office/moniti/
http://www.233.com/ncre2/Office/moniti/index02.html
http://www.233.com/ncre2/Office/moniti/index03.html
...
并且我们可以看到这些网址又属于哪些块下,稍后我们将提取它们
我们先来考虑一个页面的数据提取:
|
|
以上是请求方式和返回数据的获取,需要导入 import urllib.request ,并且注意将 response
的编码格式设置为utf-8,以保证中文信息的正确显示。最后将返回内容提取到一个变量中,即 res.read()
但是当你此刻打印 data
时候,会发现data中存储的是整个页面的内容,此时我们就要用到 BeautifulSoup
来解析内容了。
Parser | 方法 | 优点 | 缺点 |
---|---|---|---|
Python’s html.parser | BeautifulSoup(markup,”html.parser”) | python自身带有 速度比较快 |
不能很好地兼容(Python 2.7.3 or 3.2.2之前) |
lxml’s HTML parser | BeautifulSoup(markup,”lxml”) | 速度很快 兼容性好 |
lxml只会局部遍历 |
html5lib | BeautifulSoup(markup, “html5lib”) | 兼容性很好 可以像web浏览器一样解析html页面 Creates valid HTML5 |
速度很慢 |
这里我们选择Python’s html.parser就足够了。当然我们要先from bs4 import BeautifulSoup
接着我们就是要在一个链接列表页面获取到每个链接,
|
|
请求时候使用即可。
另外一点可说的就是,最好在请求时候适当的使用time.sleep(1),使请求不是那么频繁,不易被察觉。
完整源码Github