当前位置: 首页 > 后端技术 > Python

Python爬取知乎盐选内容

时间:2023-03-26 14:05:38 Python

看过前文的朋友一定知道我最近一直在看python的内容,既然看了python,就得看一看最热门的一篇python、爬虫的功能。然后最近正好看到知乎严选上的几篇文章,就想动手爬一下文章的内容,不过一开始说还好。可以直接用requests_html往下爬,但是为了避开内容,需要是会员才能往下爬,不过最主要的是我有会员。于是找了下关于python爬虫模拟登录的代码,发现大部分都很麻烦,加上自己比较懒,昨天发烧了,于是找了个简单的方法,利用了别人的开源库。DecryptLogin库是一个用于模拟登录的开源库。它目前支持很多网站的模拟登录,所以我决定用它来测试。fromDecryptLoginimportlogin先导入库,再通过内置函数模拟登录。lg=login.Login()_,loginstauts=lg.zhihu(username='',password='',mode='pc')然后模拟登录,发现可行,于是决定使用这个库进行模拟登录。可没想到,当我以为自己离成功只差一步之遥时,现实却给了我一记重头锤。我用xpath获取不到内容,后来发现library给的example不太好理解,然后试了试发现不可行,不是这个错误就是那个错误。之后本以为会卡在这里很久,结果下午突然想到看这个库的代码,看看里面到底调用了什么。importrequests没想到会调用requests库,所以好办,直接使用requests库的方法即可。headers={'user-agent':"Mozilla/5.0(WindowsNT6.1)AppleWebKit/537.36(KHTML,likeGecko)Chrome/41.0.2228.0Safari/537.36"}这个是设置useragent,然后只需要请求data但是url2="https://www.zhihu.com/market/paid_column/1178733193687175168/section/1178742849583083520"r=loginstauts.get(url2,headers=headers)wenzi=r.text然后我们可以直接获取htmlfrom.text页面的所有内容都没有了,但是很明显带有各种html标签的内容并不是我们想要的。一开始我用的是requests_html。原以为requests有xpath功能,没想到是。都推荐fromlxmlimportetree,但是我想找一个简单的,于是百度了一下,发现frombs4importBeautifulSoup,很nice。soup=BeautifulSoup(wenzi,'lxml',from_encoding='utf8')texts=soup.find_all('p')fortextintexts:print(text.get_text())这样我们就可以读取所有的内容了,但是在其实当时有个问题,就是如果在使用了find_all方法之后再使用.string属性,获取到的内容是none,我也没找到什么原因。后来在csdn上的一篇文章的评论里看到一个大佬提到的.get_text()方法。用这个代替它是不可想象的。其实看代码也就那么几行,不过确实是辛苦了,哈哈。毕竟一路上遇到了很多问题,还好大部分都已经解决了,没解决的还有替换方法。不过说实话,想要学好编程,还是需要一个好的环境。毕竟在学习的路上会遇到很多问题。如果百度没有找到,那你就需要查看论坛,提问,提问。python进阶版爬取知乎盐选全部内容https://zjzdmc.top/rcxx/64.htmlpython爬取知乎盐选全部内容