使用Scrapy框架集成Selenium实现高效爬虫
import scrapy
from scrapy_selenium import SeleniumRequest
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
class MySpider(scrapy.Spider):
name = 'my_spider'
start_urls = ['http://example.com']
def start_requests(self):
# 使用SeleniumRequest代替Scrapy的默认Request
yield SeleniumRequest(
self.parse,
url='http://example.com', # 需要爬取的页面
wait_time=5, # 等待页面加载的时间
screenshot=True, # 是否在加载时捕获屏幕截图
)
def parse(self, response):
# 这里可以使用Selenium的API来进行页面操作和数据提取
driver = response.meta['driver'] # 获取Selenium驱动程序
# 示例:点击按钮,滚动页面,获取元素文本
button = driver.find_element(By.ID, 'button_id')
button.click()
driver.execute_script('window.scrollTo(0, document.body.scrollHeight);')
text = driver.find_element(By.ID, 'text_id').text
# 提取的数据可以使用Scrapy的Item传递给管道
item = {
'extracted_text': text,
# ... 其他字段
}
yield item
这个代码示例展示了如何使用Scrapy和Selenium结合来创建一个爬虫。SeleniumRequest
代替了Scrapy的默认Request
,它会启动一个Selenium驱动程序来访问指定的URL,并在页面加载完成后执行自定义的解析方法。在解析方法中,我们可以使用Selenium的API来进行页面操作,如点击按钮、滚动页面等,并提取所需的数据。最后,我们使用Scrapy的Item传递提取的数据给管道。
评论已关闭