我正在完成一个项目,以了解有关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()")
任何帮助都会受到赞赏,我觉得这可能是必要的,但我很难找到文档。