因此,我試圖抓取popular.ebay.com頁面,並獲得#anchor鏈接的error:Missing scheme in request url: #mainContent
。Scrapy:skip hrefs w/missing scheme
下面是我的代碼:
def parse_links(self, response):
hxs = HtmlXPathSelector(response)
links = hxs.select('//a')
#domain = 'http://popular.ebay.com/'
for link in links:
anchor_text = ''.join(link.select('./text()').extract())
title = ''.join(link.select('./@title').extract())
url = ''.join(link.select('./@href').extract())
meta = {'title':title,}
meta = {'anchor_text':anchor_text,}
yield Request(url, callback = self.parse_page, meta=meta,)
我可以基本URL不會增加#mainContent,因爲它增加了一個雙網址的URL與完整的URL方案。我最終得到的URL這樣http://popular.ebay.comhttp://www.ebay.com/sch/i.html?_nkw=grande+mansion
def parse_links(self, response):
hxs = HtmlXPathSelector(response)
links = hxs.select('//a')
#domain = 'http://popular.ebay.com/'
for link in links:
anchor_text = ''.join(link.select('./text()').extract())
title = ''.join(link.select('./@title').extract())
url = ''.join(link.select('./@href').extract())
meta = {'title':title,}
meta = {'anchor_text':anchor_text,}
yield Request(response.url, callback = self.parse_page, meta=meta,)
我想是這樣的鏈接:<a href="http://popular.ebay.com/antiques/antique-chair/antique-chairs.htm" title="Antique Chairs">Antique Chairs | </a>
,但我得到的鏈接這樣的錯誤原因:<a id="gh-hdn-stm" class="gh-acc-a" href="#mainContent">Skip to main content</a>
我怎麼會去加入鹼只有鏈接到哈希錨鏈接,或忽略沒有在其中的基礎網址的鏈接?對於簡單的解決方案,我嘗試了設置規則deny=(#mainContent)
和restrict_xpaths
,但抓取工具仍然出現相同的錯誤。
是的,我明白錯誤來自哪裏,我試着設置拒絕規則和restrict_xpaths,但它仍然有相同的錯誤。我不能使用允許,除非我寫出我試圖抓取的每個url類別。 –
允許可以採取正則表達式,你可以構造一些正則表達式來忽略以「#」開頭的鏈接:) – Toby
我不知道正則表達式可以忽略!多麼好的解決方法!讓我嘗試一下並回復你,謝謝! –