scrapy selenium登录然后搜索页面

时间:2017-11-28 02:40:51

标签: python selenium scrapy

我正在完成一个项目,以了解有关scrapy和selenium的更多信息,我对scrapy和python一般都很陌生。

我试图刮去grocery.walmart.com,试图检查当地杂货的价格。 grocery.walmart.com需要邮政编码或登录。当我尝试使用表单请求scraper时,我通常会得到一个无法找到表单的valueerror。我试图按照文档和一些不同的网站,但无济于事。如果您尝试直接转到某个项目的URL,该页面将无法加载,因为它需要登录或邮政编码,但我无法找到传递邮政编码的方法,因此看起来它需要您转到第一页,输入邮政编码然后继续通过网站。是否可以转到zipcode /登录页面,然后在保持自己登录或传入邮政编码的同时传递特定项目的URL?

我在下面添加了我的蜘蛛:

class GrocerySpider(scrapy.Spider):
    name = "Grocery"
    allowed_domains = ["walmart.com"]
    with open("grocery.txt", "rt") as f:
        start_urls = [url.strip() for url in f.readlines()]

def __init__(self):
    scrapy.Spider.__init__(self)
    self.br = webdriver.Chrome()

def _del_(self):
    self.br.close()

def parse(self, response):
    yield scrapy.FormRequest.from_response(
        response,
        formxpath = '/html/body/div[1]/div/div[2]/div[1]/div/div[1]/div/div/form',
        formdata={'postalCode': '12345'},
        clickdata = {"type" : "Submit" },
        callback=self.after_login
    )       

def after_login(self, response): 
    self.br.get(response.url)
    time.sleep(5)
    Today = datetime.datetime.now()
    br_selector = Selector(text = self.br.page_source)
    grocload = ProductLoader(item=WmtGroc(), selector=br_selector)
    grocload.add_xpath("title", "//h1[@class'_2_SmE355ZdP4Ymmg7ew7RT']/text()")

任何帮助都会受到赞赏,我觉得这可能是必要的,但我很难找到文档。

0 个答案:

没有答案