爬虫豆瓣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 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:的文本。
那应该返回的是9才对,为啥最后返回的是10 suchocolate 发表于 2020-6-27 18:31
不知道网址,看不到网页代码,只从语法上看就是:
soup.find('span', class_='next').previous_sibling.pr ...
那应该返回的是9才对啊,为啥返回的是10 混沌未开 发表于 2020-6-27 19:01
那应该返回的是9才对啊,为啥返回的是10
那你能不能贴出你的网站和所有代码,让我们和你一起分析分析,没有网址和代码,你让我们猜你怎么写的吗?
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:39 编辑
bs的previous/next_sibling空白(空白换行)也算兄弟节点。
suchocolate 发表于 2020-6-27 20:34
bs的previous/next_sibling空白(空白换行)也算兄弟节点。
这个“空白”和“event”我的不显示啊,这个咋设置 第三行代码 中.previous_sibling.previous_sibling 是什么意思 混沌未开 发表于 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>
suchocolate 发表于 2020-6-27 18:31
不知道网址,看不到网页代码,只从语法上看就是:
soup.find('span', class_='next').previous_sibling.pr ...
解释的可以,鱼币给你了没{:5_109:}
页:
[1]