混沌未开 发表于 2020-6-27 17:37:08

爬虫豆瓣top250

小甲鱼视频里面,关于找出一共有多少页面,beautifulsoup的划红线部分没看明白
def find_depth(res):
    soup = BeautifulSoup(res.text,'html.parser')
    depth = soup.find('span', class_='next').previous_sibling.previous_sibling.text
    #a = str(re.findall(r'*',soup.a['href'])
    depth = int(depth)
    return depth   

suchocolate 发表于 2020-6-27 17:37:09

本帖最后由 suchocolate 于 2020-6-27 19:12 编辑

不知道网址,看不到网页代码,只从语法上看就是:
soup.find('span', class_='next').previous_sibling.previous_sibling.text
1)('span', class_='next'):找class为next的span节点
2)previous_sibling.previous_sibling:这个节点的兄弟(同级)节点往前数2个节点
3)text:的文本。

焦健鬼 发表于 2020-6-27 17:37:49


混沌未开 发表于 2020-6-27 18:58:54


那应该返回的是9才对,为啥最后返回的是10

混沌未开 发表于 2020-6-27 19:01:57

suchocolate 发表于 2020-6-27 18:31
不知道网址,看不到网页代码,只从语法上看就是:
soup.find('span', class_='next').previous_sibling.pr ...

那应该返回的是9才对啊,为啥返回的是10

suchocolate 发表于 2020-6-27 19:16:21

混沌未开 发表于 2020-6-27 19:01
那应该返回的是9才对啊,为啥返回的是10

那你能不能贴出你的网站和所有代码,让我们和你一起分析分析,没有网址和代码,你让我们猜你怎么写的吗?

混沌未开 发表于 2020-6-27 19:44:52

suchocolate 发表于 2020-6-27 19:16
那你能不能贴出你的网站和所有代码,让我们和你一起分析分析,没有网址和代码,你让我们猜你怎么写的吗? ...

from bs4 import BeautifulSoup
import requests

def url_open(url):
    headers = {'user-agent':
                   'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.98 Safari/537.36'
               }
    res = requests.get(url, headers=headers)

    return res

url = 'https://movie.douban.com/top250'
res = url_open(url)
soup = BeautifulSoup(res.text, 'html.parser')
depth = soup.find('span', class_='next').previous_sibling.previous_sibling.text
depth = int(depth)
print(depth)

就这段

suchocolate 发表于 2020-6-27 20:34:54

本帖最后由 suchocolate 于 2020-6-27 20:39 编辑

bs的previous/next_sibling空白(空白换行)也算兄弟节点。

混沌未开 发表于 2020-6-27 20:55:52

suchocolate 发表于 2020-6-27 20:34
bs的previous/next_sibling空白(空白换行)也算兄弟节点。

这个“空白”和“event”我的不显示啊,这个咋设置

g5x2415a 发表于 2020-6-27 21:09:45

第三行代码 中.previous_sibling.previous_sibling 是什么意思

suchocolate 发表于 2020-6-28 00:40:32

混沌未开 发表于 2020-6-27 20:55
这个“空白”和“event”我的不显示啊,这个咋设置

我的firefox默认显示,不需要设置。
总之你记住2个节点之间有换行而不是连着的,bs就解析为换行也算作一个兄弟节点。
1)有换行,换行是bb的直接previous_sibling:
<div>aa</div>
<div>bb</div>
2)连着的,aa是bb的直接previous_sibling:
<div>aa</div><div>bb</div>

小可爱你好 发表于 2020-6-28 03:53:13

suchocolate 发表于 2020-6-27 18:31
不知道网址,看不到网页代码,只从语法上看就是:
soup.find('span', class_='next').previous_sibling.pr ...

解释的可以,鱼币给你了没{:5_109:}
页: [1]
查看完整版本: 爬虫豆瓣top250