[英]Malformed URL from crawl
我對爬行很陌生。 我爬取了一個網頁並提取了超鏈接,然后將其提供給 Apache Nutch 1.18。 所有網址均因格式錯誤而被拒絕。 我想要做的是爬取項目數據庫頁面,提取它們的超鏈接,然后分別爬取每個頁面。
我使用 Scrapy 爬取了數據庫頁面,並將結果保存為 Json 文件。 然后我解析 json 文件以提取鏈接,並將這些鏈接提供給 Nutch 以對每個頁面進行深度抓取。
我試圖驗證這些鏈接,但我知道它們都是錯誤的:
def url_check(url):
min_attr = ('scheme' , 'netloc')
try:
result = urlparse(url)
if all([result.scheme, result.netloc]):
print ('correct')
else:
print('wrong')
except:
print ('wrong')
我現在的目標是修復這些鏈接,以便 Nutch 接受它們。
這是我用來從 JSON 文件中提取鏈接的代碼:
if __name__ == '__main__':
print('starting link extraction')
fname = "aifos.json"
with codecs.open(fname, "rb", encoding='utf-8') as f:
links_data = f.read()
json_data = simplejson.loads(links_data)
all_links =[]
for item in json_data:
website = item['link']
有人可以幫忙嗎? 我嘗試了一些建議,但他們一直失敗。
請注意,我不是要驗證網址,我已經發現它們無效。 我正在嘗試修復它們。 這些 URL 都有效。 我已經訪問過它們。 我現在不確定我的原始抓取代碼是否有問題。 請看下面。 “鏈接” object 是我現在遇到的問題。
def parse_dir_content(self, response):
items = AifosItem()
#all_projects = response.css('div.node__content')
title = response.css('span::text').extract()
country = response.css('.details__item::text').extract()
link = response.css('dd.details__item.details__item--long a::attr(href)').extract()
short_description = response.css('.field.field--name-field-short-description.field--type-text-long.field--label-hidden').extract()
long_description = response.css('.field.field--name-field-long-description.field--type-text-long.field--label-hidden').extract()
#long_description = response.css('.node__content--main').extract()
items['title'] = title
items['country'] = country
items['link'] = link
items['short_description'] = short_description
items['long_description'] = long_description
yield items
編輯:-這里的摘要是這樣的-如何修復爬蟲的格式錯誤的網址? 單擊這些 url 時確實有效,但爬蟲將它們視為格式錯誤而拒絕它們,當我測試它們時,我得到它們無效的錯誤。 我錯過了解析嗎? 這就是我添加 Scrapy 爬取代碼的原因,該代碼用於從父頁面中提取這些 url。
現在已經解決了這個問題。 在此處找到修復 url 的方法: 如何在必要時將“http://”協議添加到 url?
這修復了 Nutch 中的協議,但我還發現我需要在 nutch 中更新我的 regex-urlfilter.txt,因為我輸入了一個使注入器拒絕不匹配的 url 的正則表達式。 有點尷尬啊
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.