пустой img sr c при удалении веб-сайта с помощью запросов - html python - PullRequest
0 голосов
/ 07 августа 2020

Когда я использовал Beautifulsoup и модуль запросов для удаления img s src, все img s src пусты, поэтому я предполагаю, что значение src генерируется JavaScript. Следовательно, я попытался использовать вместо него модуль requests_ html. Однако, когда я пытаюсь удалить ту же информацию после отображения ответа, только два из img s src имеют значение, а остальные пусты, но проблема в том, что когда я проверял его на веб-сайте с помощью инструментов разработчика , кажется, что sr c другого img должен иметь значение. Могу я узнать, в чем проблема?

код для bs4 и запросов

from bs4 import BeautifulSoup
import requests

biliweb = requests.get('https://www.bilibili.com/ranking/bangumi/13/0/3').text

bilisoup = BeautifulSoup(biliweb,'lxml')

for item in bilisoup.find_all('div',class_='lazy-img'):
    
    image_html = item.find('img')
    print(image_html)

код для запросов_ html

from requests_html import HTML, HTMLSession

session = HTMLSession()

biliweb =  session.get('https://www.bilibili.com/ranking/bangumi/13/0/3')
biliweb.html.render() 


for item in biliweb.html.find('.lazy-img.cover > img'):
    print(item.html)

Я покажу только первый пять результатов, потому что список довольно длинный

С Beautifulsoup и запросами

Re : 从零开始 的 异 世界 生活 第二 季
刀剑 神 域 爱丽丝 篇 异界 战争 - 终 章 -
没落 要塞 / DECA-DENCE
某 科学 的 超 电磁炮 т
宇 崎 学 妹 想要 玩!

С запросами_ html

Re : 从零开始 的 异 世界 生活 第二 季
刀剑 神 域 爱丽丝 篇 异界 战争 - 终 章 -
没落 要塞 / DECA-DENCE 某 科学 的 超 电磁炮 т
宇 崎 学 妹 想要 玩!

1 Ответ

0 голосов
/ 07 августа 2020

Все данные хранятся в переменной javascript с именем __INITIAL_STATE__.

Следующий сценарий сохраняет данные в файле json. Получив это, вы можете легко загрузить изображения.


import requests, json
from bs4 import BeautifulSoup

page = requests.get('https://www.bilibili.com/ranking/bangumi/13/0/3')
soup = BeautifulSoup(page.content, 'html.parser')

script = None
for s in soup.find_all("script"):
    if "__INITIAL_STATE__" in s.text:
        script = s.get_text(strip=True)
        break

data = json.loads(script[script.index('{'):script.index('function')-2])

with open("data.json", "w") as f:
    json.dump(data, f)

print(data)

Вывод:

{'rankList': [{'badge': '会员抢先', 'badge_info': {'bg_color': '#FB7299', 'bg_color_night': '#BB5B76', 'text': '会员抢先'}, 'badge_type': 0, 'copyright': 'bilibili', 'cover': 'http://i0.hdslb.com/bfs/bangumi/image/f2425cbdb07cc93bd0d3ba1c0099bfe78f5dc58a.png', 'new_ep': {'cover': 'http://i0.hdslb.com/bfs/archive/2f5bf4840747fc7c09932d2793e96a178cd05905.jpg', 'index_show': '更新至第5话'}, 'pts': 1903981, 'rank': 1, 'season_id': 33802, 'stat': {'danmaku': 814356, 'follow': 7135303, 'series_follow': 7267882, 'view': 33685387}, 'title': 'Re:从零开始的异世界生活 第二季', 'url': 'https://www.bilibili.com/bangumi/play/ss33802', 'pic': 'http://i0.hdslb.com/bfs/bangumi/image/f2425cbdb07cc93bd0d3ba1c0099bfe78f5dc58a.png', 'play': 33685387, 'video_review': 814356}, {'badge': '会员抢先', 'badge_info': {'bg_color': '#FB7299', 'bg_color_night': '#BB5B76', 'text': '会员抢先'}, 'badge_type': 0, 'copyright': 'bilibili', 'cover': 'http://i0.hdslb.com/bfs/bangumi/image/54d9ca94ca84225934e0108417c2a1cc16be38fb.png', 'new_ep': {'cover': 'http://i0.hdslb.com/bfs/archive/a772451f1f031ee1a3b78e31e4fb0b851517817f.jpg', 'index_show': '更新至第16话'}, 'pts': 483317, 'rank': 2, 'season_id': 32781, 'stat': {'danmaku': 514174, 'follow': 6195736, 'series_follow': 6733547, 'view': 36351270}, 'title': '刀剑神域 爱丽丝篇 异界战争 -终章-', 'url': 'https://www.bilibili.com/bangumi/play/ss32781', 'pic': 'http://i0.hdslb.com/bfs/bangumi/image/54d9ca94ca84225934e0108417c2a1cc16be38fb.png', 'play': 36351270, 'video_review': 514174}, {'badge': '会员抢先', 'badge_info': {'bg_color': '#FB7299', 'bg_color_night': '#BB5B76', 'text': '会员抢先'}, 'badge_type': 0, 'copyright': 'bilibili', 'cover': 'http://i0.hdslb.com/bfs/bangumi/image/d5d7441c20614dc5ddc69f333f1906a09eddcee2.png', 'new_ep': {'cover': 'http://i0.hdslb.com/bfs/archive/fe191e9ffa2422103bffcd8615446f5885074c0b.jpg', 'index_show': '更新至第5话'}, 'pts': 455170, 'rank': 3, 'season_id': 33803, 'stat': ....
...
...
...
...