该网站是否受到保护以防刮擦?

时间:2019-04-05 22:48:23

标签: python beautifulsoup screen-scraping

我正在尝试从此网站中删除周年纪念: http://www.presanse.fr/CISME/annuaire.aspx 为了向您显示我需要剪贴的信息,请单击“ tous les services”,然后将显示一个列表,然后单击一个项目(例如AST-BTP),然后将显示一个包含很多信息的页面(我需要全部其中)。 我尝试检查代码,但我发现有<“ div”,class =“ ficheCorneeDetails”>包含此信息,但我无法删除它,我的脚本返回“无” 谢谢您的帮助!

2 个答案:

答案 0 :(得分:3)

您需要的信息是使用JavaScript脚本加载的,仅使用刮板发出的请求将无法正常工作。

您将需要使用类似Selenium

的按钮来模拟按钮的点击

答案 1 :(得分:0)

要做到这一点,除了美丽的汤外,还需要再添加硒。

1)在https://github.com/mozilla/geckodriver/releases

处下载geckoDriver(火狐)。

2)解压缩exe并将其添加到系统路径

3)使用 pip install硒

安装硒

4)运行以下命令:

from bs4 import BeautifulSoup
from selenium import webdriver
import time

driver = webdriver.Firefox()
driver.get('http://www.presanse.fr/CISME/annuaire.aspx')


availbutton = driver.find_element_by_id('ctl00_cphMiddle_UC_RechercheParCarte1_linkTousLesServices')
availbutton.click()
time.sleep(2)

html = driver.page_source
soup = BeautifulSoup(html,'lxml')

targetDiv = soup.find_all("div", {"class": "resultatTable"})
targetsoup = BeautifulSoup(str(targetDiv),'lxml')
for span in targetsoup:
    print(span.text)

driver.close()

您可以与动态创建之前的元素进行交互,也可以使用button.click()单击DOM元素。我添加了2秒的延迟,以允许加载表,因为我最初仍然空白,没有时间加载它!