如何使用 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 从网页获取链接的主要内容,如果未能解决你的问题,请参考以下文章

使用Python从网页中获取链接

如何获取网页的url

如何在html中获取网页链接的小缩略图

如何从数组中的 textarea HTML 标记中获取数据,然后循环遍历它?

如何从 Selenium IDE 中的“链接”元素获取 url

如何利用java中url实现网页内容的抓取