簡體   English   中英

來自爬行的畸形 URL

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM