听到网站爬虫,很多人都觉得很高大上,爬虫是不是黑客才能干的事啊?今天这里展示了一个简单的爬虫程序,并且对数据进行读取分析,最后写入Excel文件。
难点在于分析HTML代码上,最起码您得看得懂HTML代码。
requests库
requests库功能很强大,这里我们需要用到它都只是我们给它一个网址,然后让它将html代码获取下来:
import requests
headers = {
'User-Agent': 'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.100 Mobile Safari/537.36'}
r = requests.get('http://www.baidu.com', headers=headers)
print(r.text)
有些网站含有防爬虫机制,如果不设置UserAgent就无法获取准确的网站内容。那么该如何取得User-Agent到值:
如果你使用到送chrome浏览器,那么按F12,然后再刷新页面,在Network页面中选择all,再在左侧到www.baidu.com中找到Headers中找出User-Agent复制即可,其它网页也是类似操作。
image-20200213153036379.png
运行之后将会得到baidu.com首页都全部代码:(代码太长,此处省略)
提取HTML数据:Beautiful Soup
Beautiful Soup 是一个可以从HTML或XML文件中提取数据的Python库.它能够通过你喜欢的转换器实现惯用的文档导航,查找,修改文档的方式.Beautiful Soup会帮你节省数小时甚至数天的工作时间.
好,现在查阅了Beautiful Soup官网都基本说明,我们可以来完成一个最简单都爬虫代码,获取到百度的title值:
import requests
from bs4 import BeautifulSoup
headers = {
'User-Agent': 'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.100 Mobile Safari/537.36'}
r = requests.get('http://www.baidu.com', headers=headers)
soup = BeautifulSoup(r.text, 'html.parser')
pagetitle = soup.find("title")
print(pagetitle.get_text())
运行以后得到:
百度一下
进程已结束,退出代码 0
其实还是相当简单的对吧,下面我们再把难度提高一点点,去获取一个复杂点都网站,并且把它写入Excel文件里面。
爬虫实行僧网站
下面到例子是爬取实习僧网站,是一个实习生的招聘网站。
我们想爬取到是从page=1-page=4之间的所有页面,即是从:
到
之间的所有网页:
那么按照上面的代码,我们可以写出以下的代码:
import requests
htmls = []
headers = {
'User-Agent': 'Mo