在日常爬虫工作中会遇到很多数据对比的测试任务,在后端接口有做数据加密,或接口有做鉴权等情况下,我们再从后端去取参数,耗费的时间成本就会增加。网上查了下,我们可以通过走前端页面上去获取数据,简单学习了下,居然可以使用requests + BeautifulSoup 以及其他一些工具包来实现该功能。
关于BeautifulSoup爬的使用这里我们可以简单的介绍下,BeautifulSoup是python的一个库,最主要的功能是从网页抓取数据,在抓取的过程中会使用到一些功能。
1、请求头herders的使用,参考示例如下:
headers={'User-Agent': 'Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.110 Safari/537.36','referer':"www.mmjpg.com" } all_url = 'http://www.mmjpg.com/' 'User-Agent':请求方式 'referer':从哪个链接跳转进来的
2、解析获取的页面
Soup = BeautifulSoup(start_html.text, 'lxml') BeautifulSoup:解析页面 lxml:解析器 start_html.text:页面的内容
3、获取目标内容
<a href =# >内容</a> a[i]/get_text():获取第i个a标签里面的内容
爬取数据案例如下,这里以访问豆瓣为需求,因为豆瓣的反爬机制都是比较严的,并且需要登录,这里只是实践不做大量数据抓取,所以只在代码里面添加了代理IP。
#! -*- encoding:utf-8 -*- import requests import random # 要访问的目标页面 targetUrl = "https://www.baidu.com/" # 要访问的目标HTTPS页面 # targetUrl = "https://www.baidu.com/" proxyHost = "t.16yun.cn" proxyPort = "31111" # 代理验证信息 proxyUser = "udfejfhk" proxyPass = "568547" proxyMeta = "http://%(user)s:%(pass)s@%(host)s:%(port)s" % { "host" : proxyHost, "port" : proxyPort, "user" : proxyUser, "pass" : proxyPass, } # 设置 http和https访问都是用HTTP代理 proxies = { "http" : proxyMeta, "https" : proxyMeta, } # 设置IP切换头 tunnel = random.randint(1,10000) headers = {"Proxy-Tunnel": str(tunnel)} resp = requests.get(targetUrl, proxies=proxies, headers=headers) print resp.status_code print resp.text
BeautifulSoup虽然作为一个爬虫工具还是有很多的用处的,这里只是对功能做个简单介绍和认识,希望能对大家有帮助,有更优的实现方式可以自己再添代码实现。另外,BeautifulSoup还有很多功能,比如修改删除功能,这些功能可以再日后的学习中慢慢了解。
若有收获,就点个赞吧