1

重複の可能性:
ドメイン名を含むようにリンクを変更する Scrapy

私はこのコードを使用してhtml Webサイトからデータを抽出し、データをXMLファイルに保存しましたが、うまく機能します。

def parse(self, response):
    hxs = HtmlXPathSelector(response)
    items = []
    site1 = hxs.select('/html/body/div/div[4]/div[3]/div/div/div[2]/div/ul/li')
    for site in site1:
        item = NewsItem()

        item ['title'] = site.select('a[2]/text()').extract()
        item ['image'] = site.select('a/img/@src').extract()
        item ['text'] = site.select('p/text()').extract()
        item ['link'] = site.select('a[2]/@href').extract()


        items.append(item)

    return items

しかし、私が直面している問題は、ウェブサイトが ['image'] の短いリンクを提供していることです。

<img src="/a/small/72/72089be43654dc6d7215ec49f4be5a07_w200_h180.jpg"

完全なリンクは次のようになります。

<img src="http://www.aleqt.com/a/small/72/72089be43654dc6d7215ec49f4be5a07_w200_h180.jpg"

欠落しているリンクを自動的に追加するようにコードを変更する方法を知りたい

4

2 に答える 2

1

これを試すことができます

item ['link'] = urljoin(response.url, site.select('a[2]/@href').extract())

于 2013-01-22T01:15:23.633 に答える
0

このようなすべての画像リンクに「http://www.aleqt.com」を追加するだけでよいと仮定すると、次のようになります。

def parse(self, response):
    base_url = 'http://www.aleqt.com'
    hxs = HtmlXPathSelector(response)
    items = []
    site1 = hxs.select('/html/body/div/div[4]/div[3]/div/div/div[2]/div/ul/li')
    for site in site1:
        item = NewsItem()    
        item ['title'] = site.select('a[2]/text()').extract()
        item ['image'] = base_url + site.select('a/img/@src').extract()
        item ['text'] = site.select('p/text()').extract()
        item ['link'] = base_url + site.select('a[2]/@href').extract()
        items.append(item)
    return items

または、まったく同じURLをstart_urlsリストに追加した場合(1つしかない場合は、次のように置き換えることができますbase_urlself.start_urls[0]

于 2013-01-22T01:08:43.863 に答える