页面乱码问题
很多时候你读取的页面编码是utf-8但是内容就是乱码,以下方式通用解决乱码的问题
导包
import requests
查询当前页面的编码情况
r = requests.get('https://www.89ip.cn/index_1.html')
content = r.content
print(r.headers['content-type'])
print(r.encoding)
print(r.apparent_encoding)
结果
text/html;charset=utf-8
utf-8
utf-8
可以看到是utf-8 但是内容取出来就是乱码,解决办法
def getHtmlAndDealCode(url):
urllib3.disable_warnings() # 去除警告
html=requests.get(url,verify=False)
code=html.encoding
html=html.text
html=html.encode(code)
html=html.decode('utf-8')
# parser = 'html.parser'
# soup = BeautifulSoup(html ,parser)
# 如果使用BeautifulSoup那么返回soup即可
return html
效果演示
htmlAndDealCode = getHtmlAndDealCode('https://www.89ip.cn/index_1.html')
rhtml = html.fromstring(htmlAndDealCode)
result = rhtml.xpath('//table/tbody/tr/td')
爬取页面获取不到某些内容
一般遇到这种情况,坑操蛋比如下面这种情况
这种方式会我们爬虫是爬取不到的,因为这里的他是利用js的加密和解密后期在通过js渲染上去的,而我们爬虫爬取出来的只能是document.write(window.atob("MTA2Ljc1LjIyNi4zNg=="));
而真实的数据我们拿去不到的,解决办法,使用python自动化selenium这个技术是能模拟真人操作的,只要是你人进入这个页面能看到的数据那么使用selenium都能获取到,但是就是比爬虫慢很多处理起来也有些费劲,但是这些都是难不倒我们的,勇敢牛牛不怕困难,加油
我这里就贴一段演示代码,具体细节不提供代码有点多
第一个案例: 刷新视频播放量至于谁的o( ̄︶ ̄)o保密
第二个案例: 爬取指定网页的内容
本文参考链接:https://huanmin.blog.csdn.net/article/details/121513618