昨天我朋友突然问我爬虫的一些事情,突然想起好像好久都没爬过数据了
说一下我的爬取过程吧。
爬虫无非就是模拟浏览器请求的过程来进行获取数据
这次要爬取的网址是 https://db.yaozh.com/
打开浏览器的控制台 F12 也可以调出来
点击Network 并刷新网页 就可以查看网页的加载过程
然后找到浏览器加载的第一个文件 也就是类型Type是document的文件
查看预览一下
发现数据在这个网页里 那我们尝试爬取一下是不是这样网页中携带我们所需要的数据
import requests
url ="https://db.yaozh.com/Search?typeid=8446&content=s"
headers={
"User-Agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Safari/537.36"
}
res = requests.get(url=url,headers=headers)
print(res.text)
发现数据在这里 那可以使用正则表达式 或者 xpath 将数据提取出来
但是这次 我们获取数据有一种更快的来源
就是直接拿取异步请求的数据
其中all 是所有加载的内容 点击到 XHL 中 XHL是ajax请求的内容,有很多网页都是通过ajax异步请求来获取的内容
查看需求数据是否从ajax异步请求回来的
可以发现数据也是可以从这里获取到 并且这里的数据都是规规整整的 不像网页那样需要使用正则或者xpath来获取
找到异步请求的网址
找到网址 然后 直接进行爬取吧
一下子就能获取到数据了 剩下提取数据就很简单的工作了 其中提取的nav_name需要解码一下
注意:
1、如果爬取该网页 是需要加上请求头的
2、使用ajax请求网址来爬取的内容是不需要加上请求头的
其中大部分网址的反爬无非就是 验证请求头,ip的访问频率过快,cookie藏有token验证,cookie藏有时间戳验证,这些东西都是可以破解的