Ich versuche, eine Website mit scrapy zu kratzen, wird Meine Spinne wie folgt:Arbeiten mit Last mehr Anfrage mit scrapy Python
class AngelSpider(Spider):
name = "angel"
allowed_domains = ["angel.co"]
start_urls = (
"https://angel.co/companies?locations[]=India",
)
def start_requests(self):
page_size = 25
headers ={
'Host': 'angel.co',
'Origin': 'https://angel.co',
'User-Agent': 'Scrapy spider',
'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
'Accept': '*/*',
'X-Requested-With': 'XMLHttpRequest',
'Referer': 'https://angel.co/companies?locations[]=India',
'Accept-Language': 'en-US',
}
for offset in (0, 200, page_size):
yield Request('https://angel.co/company_filters/search_data',
method='POST',
headers=headers,
body=urllib.urlencode(
{'action': 'more',
'filter_data[locations][]':'India',
'sort':'signal',
'page':2}))
def parse(self, response):
nestd =[]
company = {}
val = response.xpath('//div[@data-_tn = "companies/trending/row" ]')
company_name = response.xpath("//div[@data-_tn = 'companies/trending/row' ]//div//div//div//div[@class='name']//text()").extract()
#company_link = val.xpath("//div//div//div[@class ='photo']//@href").extract()
#company_tag_line =val.xpath("//div//div//div//div//div[@class='pitch u-colorGray6']//text()").extract()
#company_from = val.xpath("//div//div//div//div//a[@name]//text()").extract()
print company_name
Aber es ergibt keine Daten. Gibt es eine andere Möglichkeit, die Schaltfläche "Weitere Artikel laden" zu simulieren, um die Artikel zu laden und den Schaber fortzusetzen?
Sie müssen tatsächlich keine JS-Engine in Fällen wie diesem verwenden, wo alle Informationen, die Sie benötigen, nach ein paar XmlHttpRequests zurückgegeben werden. Schaut euch diesen Post an: https://blog.scrapinghub.com/2016/06/22/scrapy-tips-from-the-pros-june-2016/ –
Ich hatte Selen verwendet, bin aber immer noch nicht in der Lage, die Daten abzuschaben Link zu meiner Spinne ist https://codeshare.io/vLqat werfen Sie einen Blick darauf –