如何使用 CSS/Selenium 从网页获取链接
Posted
技术标签:
【中文标题】如何使用 CSS/Selenium 从网页获取链接【英文标题】:How to use CSS/Selenium to get links from webpage 【发布时间】:2021-03-13 01:48:36 【问题描述】:我想要下一页上每个块的链接。
BeautifulSoup 似乎无法正常工作,因为页面似乎在 javascript 中呈现,但它应该使用 CSS 或 Selenium 工作?
我将如何使用其中任何一个从页面中提取 html 链接
from bs4 import BeautifulSoup
import requests
lists=[]
baseurl='https://meetinglibrary.asco.org/'
for x in range (1,5):
url=f'https://meetinglibrary.asco.org/results?meetingView=2020%20ASCO%20Virtual%20Scientific%20Program&page=x'
r=requests.get(url)
soup=BeautifulSoup(r.content,'html.parser')
productlist=soup.find_all('a',class_='ng-star-inserted')
for item in productlist:
print(item)
【问题讨论】:
【参考方案1】:这很简单:您使用 Selenium 访问该站点,然后将源代码传递给 bs4:
from selenium import webdriver
from bs4 import BeautifulSoup
import time
driver = webdriver.Firefox()
for x in range (1,5):
driver.get('https://meetinglibrary.asco.org/results?meetingView=2020%20ASCO%20Virtual%20Scientific%20Program&page=x')
time.sleep(10)
page_source = driver.page_source
productlist=soup.find_all('a',class_='ng-star-inserted')
driver.close()
for item in productlist:
print(item)
请注意,您可能需要更改一些细节,使用webdriver.Firefox("insert path here")
时需要插入可执行路径
还要确保你已经安装了 selenium,你可以使用
pip install selenium
如果您需要在页面上滚动以加载内容,您可以使用:
for i in range(60):
driver.execute_script("arguments[0].scrollBy(0, 500)")
driver.implicitly_wait(2)
当然,您可以根据网站的大小调整“60”。 参考: The Docs of Selenium This Page basically doing what you want to do
【讨论】:
添加了一行定义什么是汤,但谢谢你做得很好! 哦是的忘记了:D以上是关于如何使用 CSS/Selenium 从网页获取链接的主要内容,如果未能解决你的问题,请参考以下文章
如何从数组中的 textarea HTML 标记中获取数据,然后循环遍历它?