我的要求 - excel文件中提供了许多网址,我必须一一抓取并提取网址上的文本部分并加载到数据库中。我已经能够一一读取文件,抓取excel文件中的所有网址(只有文件中给出的网址,而不是子页面)。我已经使用了flask和scrapy,但问题是有很多web url可以动态加载数据,而scrapy无法获取文本部分,所以我尝试了splash,这也不适用于我的动态加载的文本.现在,我正在尝试使用 selenium,但它也没有给我输出,我试图在其中截取屏幕截图,然后读取图像并提取文本部分。任何人都可以展示这个简单的例子,如何使用 selenium 和任何其他方式?以下是我正在使用的代码 -
import scrapy
import lxml.html.clean
import re
import w3lib.html
from sqlalchemy import create_engine, Sequence
from sqlalchemy import Table, Column, String, MetaData, Integer, select
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker, relationship
from sqlalchemy.sql import select
import difflib
from w3lib.html import remove_tags, remove_tags_with_content
from .comparison_data import PageContentComparison
from scrapy_selenium import SeleniumRequest
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait
from selenium.common.exceptions import TimeoutException
class QuotesSpider(scrapy.Spider):
name = "quotes"
def __init__(self):
self.driver = webdriver.Chrome()
self.wait = WebDriverWait(self.driver, 10)
def start_requests(self):
urls = [
'https://www.analog.com/en/products/landing-pages/new-products-listing.html',
# 'http://quotes.toscrape.com/page/2/',
]
for url in urls:
#yield scrapy.Request(url=url, callback=self.parse)
yield SeleniumRequest(url=url, callback=self.parse,screenshot=True,script='window.scrollTo(0, document.body.scrollHeight);')
def parse(self, response):
# self.driver.get(response.url)
# self.driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
# scroll_until_loaded(self)
with open('image.jpeg', 'wb') as image_file:
image_file.write(response.meta['screenshot'])