爬取B站
在看小甲鱼爬取B站的视频,好早了。有一个元素找不到了,所以也不知道代码该怎么处理,请问有没有知道的,谢谢。代码如下:
红色代码那里在B站源代码那找不到。
import requests
import bs4
res = requests.get('https://search.bilibili.com/all?keyword=%E7%BC%96%E7%A8%8B&from_source=webtop_search&spm_id_from=333.1007&search_source=5')
if res.status_code == 200:
soup = bs4.BeautifulSoup(res.text, 'html.parser')
print(soup.prettify())
<font color="#ff0000">titles = soup.find_all('li', class_ = 'video-item matrix')</font>
for each in titles:
if each.a and 'title' in each.a.attrs:
print(each.a['title'])
else:
print('Title not found for an element.')
else:
print(f'Failed to retrieve page.Status code: {res.status_code}')
B站可能已经更新了页面的结构和类名,导致代码中的选择器找不到预期的元素。以下是一些步骤和建议来调整你的代码:
1. **检查页面结构**:访问B站搜索页面,使用浏览器开发者工具(F12)检查当前的HTML结构,找到新的视频项类名。
2. **更新类名选择器**:将代码中的`'video-item matrix'`替换为在开发者工具中找到的新类名。例如,如果找到的新类名是`'new-class-name'`,代码调整为:
titles = soup.find_all('li', class_='new-class-name')
3. **检查标签结构是否变化**:确认`each.a`是否仍然是提取标题的正确方法。如果结构变化,需要根据新的结构调整代码。
4. **使用更灵活的选择器**:如果B站改动频繁,可以考虑用更通用的选择方法。例如,使用CSS选择器:
titles = soup.select('li.video-item')
5. **考虑API替代方案**:如果页面结构变化大,考虑使用B站的API进行搜索和数据获取。
确保及时检查B站的使用条款和爬取政策,避免违反其规定。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
页:
[1]