问答 / 0 / 6 / 创建于 5年前
图一是百度链接,图二是搜狗链接,requests函数没有抓取到百度的代码,请教问题出在哪里?
普通的静态页面,你那样操作没问题。但百度有自己的反爬机制,你想要的目标页面是被js动态渲染后的页面。换而言之,百度会分析你的请求特征点,根据一定模型算法来裁定你是否人为的真实有效的请求,然后给出不同页面响应。建议想达到浏览器打开的效果,python需要借助Selenium,golang的话ferret+fql可解决。
python
Selenium
golang
ferret+fql
这给的图片不都抓取到 html 页面了吗?!
需要加请求头
不加headers的请求都是在裸奔,当然不会给你后台代码,加上请求头和里面的ua就行了
其实你打印的内容就是百度的页面html,只不过你用的text,导致编码错误,中文没有显示出来
import requests url = "https://www.baidu.com" resp = requests.get(url).content print(resp.decode("utf-8"))
r.text返回的是Unicode型的数据。 使用r.content返回的是bytes型的数据。 也就是说,如果你想取文本,可以通过r.text。 如果想取图片,文件,则可以通过r.content。
我要举报该,理由是:
普通的静态页面,你那样操作没问题。但百度有自己的反爬机制,你想要的目标页面是被js动态渲染后的页面。
换而言之,百度会分析你的请求特征点,根据一定模型算法来裁定你是否人为的真实有效的请求,然后给出不同页面响应。
建议想达到浏览器打开的效果,
python需要借助Selenium,golang的话ferret+fql可解决。这给的图片不都抓取到 html 页面了吗?!
需要加请求头
不加headers的请求都是在裸奔,当然不会给你后台代码,加上请求头和里面的ua就行了
其实你打印的内容就是百度的页面html,只不过你用的text,导致编码错误,中文没有显示出来
r.text返回的是Unicode型的数据。 使用r.content返回的是bytes型的数据。 也就是说,如果你想取文本,可以通过r.text。 如果想取图片,文件,则可以通过r.content。