Web scraping 从单击时出现的多个表中进行Web抓取

Web scraping 从单击时出现的多个表中进行Web抓取,web-scraping,scrapy,portia,scrapinghub,Web Scraping,Scrapy,Portia,Scrapinghub,基本上,我想打开页面,从上一个下拉列表中选择“Rüzgar”,使用“Sorgula”按钮运行查询,并在单击主表中第一列的第一个按钮后提取表中存储的所有坐标。我想对所有行都这样做 不幸的是,我没有足够的编程经验来完成这项任务。然而,由于我对编程有点熟悉,我认为如果有人能为我指出正确的来源来学习如何做到这一点(关于我试图从中提取数据的网页的要求),我可以为这项任务构建一个小脚本,可以使用scrapy或其他工具 附言:我试着用scrapinghub的Portia实现它,但也没有成功。看看名为selen

基本上,我想打开页面,从上一个下拉列表中选择“Rüzgar”,使用“Sorgula”按钮运行查询,并在单击主表中第一列的第一个按钮后提取表中存储的所有坐标。我想对所有行都这样做

不幸的是,我没有足够的编程经验来完成这项任务。然而,由于我对编程有点熟悉,我认为如果有人能为我指出正确的来源来学习如何做到这一点(关于我试图从中提取数据的网页的要求),我可以为这项任务构建一个小脚本,可以使用scrapy或其他工具


附言:我试着用scrapinghub的Portia实现它,但也没有成功。

看看名为
selenium
的Python模块,即它的
webdriver
部分。一些执行搜索查询的快速代码如下所示:

from selenium import webdriver

driver = webdriver.Firefox()
search_link = 'http://lisans.epdk.org.tr/epvys-web/faces/pages/lisans/elektrikUretimOnLisans/elektrikUretimOnLisansOzetSorgula.xhtml?lisansDurumu=7'

driver.get(search_link)
last_dropdown_menu = driver.find_element_by_id('elektrikUretimOnLisansOzetForm:j_idt32')

last_dropdown_menu.click() # send a click to the element
last_dropdown_menu.send_keys('R') # scroll to Ruzgar
sorgula_button = driver.find_element_by_xpath('//*[@id="elektrikUretimOnLisansOzetForm:j_idt51"]/span[2]').click()

从这里,您可以了解如何获取所需信息:-)

查看名为
selenium
的Python模块,即其中的
webdriver
部分。一些执行搜索查询的快速代码如下所示:

from selenium import webdriver

driver = webdriver.Firefox()
search_link = 'http://lisans.epdk.org.tr/epvys-web/faces/pages/lisans/elektrikUretimOnLisans/elektrikUretimOnLisansOzetSorgula.xhtml?lisansDurumu=7'

driver.get(search_link)
last_dropdown_menu = driver.find_element_by_id('elektrikUretimOnLisansOzetForm:j_idt32')

last_dropdown_menu.click() # send a click to the element
last_dropdown_menu.send_keys('R') # scroll to Ruzgar
sorgula_button = driver.find_element_by_xpath('//*[@id="elektrikUretimOnLisansOzetForm:j_idt51"]/span[2]').click()

从这里,您可以了解如何刮取您要查找的信息:-)

Selenium可能还可以,因为当您将底部的分页设置为500时,只有3页。尽管如此,我不会选择硒,因为它。。。有更好的办法

当您单击“Rüzgar”按钮时,您所做的只是一个带有以下参数的POST请求:


打开chrome调试器,亲自查看正在执行的请求类型。您可以复制请求。如果您对这种方法感兴趣,请告诉我-也许-再写一些。

Selenium可能还可以,因为当您将底部的分页设置为500时,只有3页。尽管如此,我不会选择硒,因为它。。。有更好的办法

当您单击“Rüzgar”按钮时,您所做的只是一个带有以下参数的POST请求:


打开chrome调试器,亲自查看正在执行的请求类型。您可以复制请求。如果你对这个方法感兴趣,请告诉我——也许——再多写一些。

快速浏览,如果我想浏览那个网站,我会使用
selenium
快速浏览,如果我想浏览那个网站,我会使用
selenium
谢谢你的回答。但是我真的需要更多的解释,我如何能够自动清除所有坐标的操作,一旦单击第一列中的第一个按钮(我需要自动浏览所有行),发送必要的单击以使要清除的信息弹出,然后检查页面的来源,看看你想要的信息是什么样的标签。将这些标记中的文本如下:
table\u you\u want=driver.find\u element\u by\u id('elektrikCoordinationViewDatatable\u data')for tr in table\u you\u want:print tr.text
非常感谢,我将尝试按照您解释的方式来做。感谢您提供了非常有用的答案。但是我真的需要更多的解释,我如何能够自动清除所有坐标的操作,一旦单击第一列中的第一个按钮(我需要自动浏览所有行),发送必要的单击以使要清除的信息弹出,然后检查页面的来源,看看你想要的信息是什么样的标签。将这些标记中的文本如下:
table\u you\u want=driver.find\u element\u by\u id('elektrikCoordinationViewDatatable\u data')for tr in table\u you\u want:print tr.text
非常感谢,我将尝试按照您解释的方式执行。