我有一个具有多个输入字段的Intranet页面,我需要Scrapy才能使用网页“搜索产品”输入字段来运行搜索,它的ID为“ searchBox”
我已经能够使用Scrapy和Beautiful Soup锁定正确的搜索框,但是我不确定如何将这些数据正确地传递回Scrapys表单提交功能。
在方法1中,我试图将结果简单地作为输入传递给Scrapys FormRequest.from_response函数,但是它不起作用。
方法1-使用Scrapy查找数据
#Search for products
def parse(self, response):
##Let's try search using scrapy only
sel = Selector(response)
results = sel.xpath("//*[contains(@id, 'searchBox')]")
for result in results:
print (result.extract()) #Print out what scrapy found
return scrapy.FormRequest.from_response(results, formdata = {'Item': 'Whirlpool Washing Machine'}) #formdata is the data we are sending
方法2-使用精美汤来查找数据
#Search for products
def parse(self, response):
##Let's try search using Beautiful Soup only
soup = BeautifulSoup(response.text, 'html.parser')
product_search = []
product_search.append(soup.find("input", id="searchBox"))
print(product_search) #Print what BS found
答案 0 :(得分:0)
关于scrapy变体:
del /?
,而不是yield
。return
中,您应该使用形式选择器作为第一个参数。现在,据我从您的代码中可以了解到的,您在那里传递了一些输入数据。 尝试类似的东西:
from_response
只需在此表达式中修复表单选择器即可。还要检查此请求中还应该使用什么,例如一些标头,Cookie等。