使用Python从网页中提取链接

时间:2018-11-08 17:39:44

标签: python web-scraping beautifulsoup href

我有这个问题:我想从该页面中提取每个项目的URL,但是我不知道该怎么做。我试图通过

提取它
projects = main_page.find_all_next('div', attrs={'class':'relative self-start'})

但是我没有链接。我该怎么办?预先感谢您对我的帮助。

enter image description here

2 个答案:

答案 0 :(得分:0)

此网站动态加载内容。因此,您需要可以运行javascript的内容。有一个使用硒访问网站的简单示例。

from selenium import webdriver
from bs4 import BeautifulSoup

url = "https://www.kickstarter.com/discover/categories/music"

dr = webdriver.Chrome() # or PhantomJS,Firefox
try:
    dr.get(url)
    main_page = BeautifulSoup(dr.page_source,"lxml")
    projects = main_page.find_all('div', {'class':'relative self-start'})
    project_showed = main_page.find_all("div",class_="bg-white black relative border-grey-500 border")
    print(len(projects))
except Exception as e:
    raise e

finally:
    dr.close()

但是,如果无法及时加载数据,则应使用WebDriverWaitImplicit等待加载完成。 WebDriverWait and Implicit

答案 1 :(得分:0)

由javascript生成的链接,您无法通过BeutifulSoup获得,请使用Regex捕获javascript变量中的网址

import requests
import re

html = requests.get('https://www.kickstarter.com/discover/categories/music').text
listURL = re.findall(r'"project":"([^"]+)', html)
for url in listURL:
    print url