我有这个问题:我想从该页面中提取每个项目的URL,但是我不知道该怎么做。我试图通过
提取它projects = main_page.find_all_next('div', attrs={'class':'relative self-start'})
但是我没有链接。我该怎么办?预先感谢您对我的帮助。
答案 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()
但是,如果无法及时加载数据,则应使用WebDriverWait
或Implicit
等待加载完成。 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