nae*_*aeg 37 python web-crawler scrapy web-scraping
我正在使用Scrapy抓取网页.当您点击某个按钮时,我只需弹出一些我需要的信息(当然,点击后也会出现在HTML代码中).
我发现Scrapy可以处理的形式(如登录)如图所示这里.但问题是没有形式可以填写,所以这不是我需要的.
如何只需单击一个按钮,然后显示我需要的信息?
我是否必须使用像mechanize或lxml这样的外部库?
Aco*_*orn 44
Scrapy无法解释javascript.
如果您绝对必须与页面上的javascript进行交互,那么您希望使用Selenium.
如果使用Scrapy,问题的解决方案取决于按钮的作用.
如果它只显示以前隐藏的内容,您可以毫无问题地抓取数据,它不会出现在浏览器中,HTML仍然存在并不重要.
如果在按下按钮时通过AJAX动态获取内容,最好的办法是查看使用Firebug等工具按下按钮时发出的HTTP请求.然后,您可以直接从该URL请求数据.
我是否必须使用像mechanize或lxml这样的外部库?
如果你想解释javascript,是的,你需要使用不同的库,虽然这两个都不符合要求.他们都不知道关于javascript的任何事情.硒是要走的路.
如果您可以提供正在进行抓取的页面的URL,我可以查看一下.
Nim*_*ush 13
Selenium浏览器提供了很好的解决方 这是一个例子(pip install -U selenium):
from selenium import webdriver
class northshoreSpider(Spider):
name = 'xxx'
allowed_domains = ['www.example.org']
start_urls = ['https://www.example.org']
def __init__(self):
self.driver = webdriver.Firefox()
def parse(self,response):
self.driver.get('https://www.example.org/abc')
while True:
try:
next = self.driver.find_element_by_xpath('//*[@id="BTN_NEXT"]')
url = 'http://www.example.org/abcd'
yield Request(url,callback=self.parse2)
next.click()
except:
break
self.driver.close()
def parse2(self,response):
print 'you are here!'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
41730 次 |
| 最近记录: |