罗同学 发表于 2020-10-12 16:19:45

beautiful soup find_all()查找丢失部分内容

本帖最后由 罗同学 于 2020-10-12 16:22 编辑

帮女票爬一个小说(网上找不到资源),某乎连在的那种,这一页手动查看应该是有5个class = 'ContentItem-title'的标签的,可以从里面获取每一章的链接,但是不知道为啥每次find_all()只能返回前两个,后面的就给吞了,换别的页面也是只能找到前两个。求大佬帮助。


再默默问一嘴、正文里面带链接是会被和谐么、前面发了几次带链接的都发不出去,然后在“我的帖子”里面还会显示,但是帖子打不开。链接放1楼了。

罗同学 发表于 2020-10-12 16:20:22

链接:https://www.zhihu.com/people/meng-wa-83-63/posts?page=3

疾风怪盗 发表于 2020-10-12 17:17:50

这样可以了,用正则。。。。。。。。。。beautifulsoup不知道怎么用,正则有时更方便
import requests
import re

url = 'https://www.zhihu.com/people/meng-wa-83-63/posts?page=3'
headers = {
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.75 Safari/537.36 Edg/86.0.622.38'}
response = requests.get(url=url, headers=headers)
html_str = response.content.decode()

partten = r'"content":"(.*?)","commentCount"'
data = re.findall(partten, html_str)

# print(data)
# print(len(data))
with open('test.txt', 'w', encoding='utf-8') as f:
    for i in data:
      a = i.replace(r'\u003Cp\u003E', '\n').replace(r'\u003C\u002Fp\u003E', '\n').replace(
            r'\u003Cp class=\"ztext-empty-paragraph\"\u003E\u003Cbr\u002F\u003E', '\n')
      f.write(a)
      f.write('\n')
      f.write('\n')

罗同学 发表于 2020-10-12 17:31:30

疾风怪盗 发表于 2020-10-12 17:17
这样可以了,用正则。。。。。。。。。。beautifulsoup不知道怎么用,正则有时更方便

大佬、刚跑了一下代码、这个是直接保存了小说、是想爬那个链接里面有的好几章的地址、正则太难了、但还是谢谢大佬。

疾风怪盗 发表于 2020-10-12 17:41:14

罗同学 发表于 2020-10-12 17:31
大佬、刚跑了一下代码、这个是直接保存了小说、是想爬那个链接里面有的好几章的地址、正则太难了、但还是 ...

你确定你获取的网页信息中有你要的数据?你看到额网页源码和python获取额,不一定是一模一样的,你要在python获取的源码里找数据
只找到两个链接,另外两个链接没有获取到,所以你find_all也没找到

link_parrten=r'class="ContentItem-title"><a href="//(.*?)" target="_blank"'
link_data=re.findall(link_parrten, html_str)
print(link_data)
['zhuanlan.zhihu.com/p/73599879', 'zhuanlan.zhihu.com/p/72621342']

罗同学 发表于 2020-10-12 17:42:23

疾风怪盗 发表于 2020-10-12 17:41
你确定你获取的网页信息中有你要的数据?你看到额网页源码和python获取额,不一定是一模一样的,你要在 ...

F12查看网页代码的时候确实是有的

疾风怪盗 发表于 2020-10-12 17:44:08

罗同学 发表于 2020-10-12 17:42
F12查看网页代码的时候确实是有的

你看到额网页源码和python获取额,不一定是一模一样的!

这个是一定要注意的
页: [1]
查看完整版本: beautiful soup find_all()查找丢失部分内容