繁体   English   中英

当我尝试使用 BeautifulSoup 进行网络抓取时,一些 HTML 数据丢失

[英]Some HTML data is missing when I am trying to do webscraping using BeautifulSoup

这是我的代码,我试图从这个网站https://community.hackernoon.com/u/抓取数据

import requests
from bs4 import BeautifulSoup
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36"}

r=requests.get("https://community.hackernoon.com/u/",headers=headers)
c=r.content

soup=BeautifulSoup(c,"html.parser")
print(soup.prettify())

当我打印 soup.prettify() 时,缺少一些 HTML 代码,因为当我尝试从网站上查找作者的姓名时,在 HTML 代码中,它显示没有找到结果,我认为这就是为什么这个所有列表是在 output 中显示一个空列表

all=soup.find_all("div",{"id":"ember28"})
all

有人可以帮我看看有什么问题吗?

像您的示例这样的某些网站不会在第一次加载时加载所有数据。

在您的示例中,它首先加载网站库,然后使用 javascript 加载信息的 rest。 (您可以通过在浏览器中禁用 javascript 来进行测试)

您需要模拟浏览器(例如,使用 selenium)来执行网站 javascript,然后在加载数据后抓取数据。

从这里开始: https://selenium-python.readthedocs.io/

尝试:

from bs4 import BeautifulSoup as bs
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
import time

url = 'https://community.hackernoon.com/u/'
driver = webdriver.Chrome(ChromeDriverManager().install())
driver.set_window_size(1024, 600)
driver.maximize_window()
driver.get(url)

soup=bs(driver.page_source,'html.parser')
time.sleep(3)
all_list=soup.find_all("span",{"class":"username"})
username_li = [user.text for user in all_list]

所有列表:

[<span class="username"><a data-user-card="daria" href="/u/daria">daria</a></span>,
 <span class="username"><a data-user-card="alexcg" href="/u/alexcg">alexcg</a></span>,
 <span class="username"><a data-user-card="daytona500-live-tv" href="/u/daytona500-live-tv">daytona500-live-tv</a></span>,
 <span class="username"><a data-user-card="David" href="/u/David">David</a></span>,
 <span class="username"><a data-user-card="kunalmishra" href="/u/kunalmishra">kunalmishra</a></span>
.
.
.
]

用户名_li:

['daria',
 'alexcg',
 'daytona500-live-tv',
 'David',
 'kunalmishra',
 'Hackern00n457',
 'm15o',
 'mobphone22',
 'KeyReel',
 'msarica',
 'jeffsoo2',
 'bforgan',
 'paulandre',
 'kristinamulford24',
 'hgcontent',
 'anthony1',
 'aydin.sakar',
 'jeevansirela',
 'abhikdeora',
 'ce.roso398',
 'michaeltgately',
 'SweetHeartache',
 'max',
 'jgrossman28',
 'alek.shnayder',
 'derwiki',
 'daniel.h.heyman',
 'jmuller',
 'Vadim',
 'jessekorzan',
 'PitBullCH',
 'mbroudy4',
 'kevin.pang.w',
 'tnichols',
 'arpy',
 'list_startengine',
 'pratik.ropia',
 'davidyang',
 'avantika',
 'magneticmessages',
 'ben',
 'rob',
 'doron',
 'rich.kolasa',
 'jjfleagle',
 'B17Z',
 'eugeniya.korotya',
 'will.howard',
 'colin',
 'daniel.henrique.sc']

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM