python爬取知乎盐选文章内容 | 您所在的位置:网站首页 › 知乎严选文章怎么看全文 › python爬取知乎盐选文章内容 |
以下内容为转载内容,我遇到同样的问题,没有解决,看到答案转发一下。 其实这个之前我有在论坛问过的,但是没人回复,不过所幸我自己解决了。看过前面文章的朋友,肯定都知道我最近在看python这一块的内容,然后既然看了python那么就不得不看一下python最火爆的一个功能,爬虫。然后呢,最近又正好看了几篇知乎盐选的文章,所以就想试试手,把文章内容爬取下来,但是一开始还好说。直接用requests_html就能爬下来,但是后免得内容就需要开会员才能爬了,但是主要就是我开了会员呀。所以就找了一下关于python爬虫模拟登录的代码,发现大部分的都是比较麻烦的,而我又比较懒,并且昨天还发烧了,所以就找了一个简单的方法,使用别人的开源库。DecryptLogin这个库是一个开源的模拟登陆的库,目前支持许多的网站模拟登陆了,所以就决定使用这个进行测试。from DecryptLogin import login首先呢先把库导入进去,然后通过内置的函数进行模拟登陆。 lg = login.Login()_, loginstauts = lg.zhihu(username='', password='', mode='pc') 然后模拟登录,发现可行,于是就决定使用这个库来进行模拟登陆了。但是没想到我当时以为离成功就差一步的时候,现实给我来了一记头槌,使用xpath一直获取不到内容,然后库给的示例发现并不是很能看懂,顶多看个意思,然后自己尝试发现并不可行,不是这个错误就是那个错误。之后呢,本来以为要在这里卡很久的我,突然在下午的时候想到了去看这个库的代码,看看里面都调用了什么内容。import requests没想到调用了requests库,这下好办了,直接使用requests库的方法就行了。 headers = { 'user-agent': "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36"} 这个是设置一下useragent,之后只需要请求一下数据即可url2 = "https://www.zhihu.com/market/paid_column/1178733193687175168/section/1178742849583083520"r = loginstauts.get(url2, headers=headers)wenzi = r.text之后我们直接.text就能获取html页面的所有内容了,不过很明显,带着各类html标签的内容不是我们想要的,我一开始都是用的requests_html,本来还以为requests有xpath功能呢,没想到并没有,一开始看都推荐的是from lxml import etree这个,但是我比较想找一个简单的,所以百度一查发现了from bs4 import BeautifulSoup这个,很nice。soup = BeautifulSoup(wenzi, 'lxml', from_encoding='utf8')texts = soup.find_all('p')for text in texts: print(text.get_text())这样我们就能读取所有的内容了,不过其实当时还遇到了一个问题,就是使用find_all这个方法之后使用.string属性的话,获取到的内容为none百度查过大部分人说是因为有br标签,但是自己也看过并没有,所以并没有找到什么原因,后来在csdn的一篇文章里的评论看到了一个大佬说的.get_text()方法,换成这个没想到就出结果了,难以想象。 |
CopyRight 2018-2019 实验室设备网 版权所有 |