我使用此代码从html网站中提取数据,并将数据存储在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"
我想知道如何修改我的代码以自动添加缺失的链接
答案 0 :(得分:1)
你可以试试这个
item ['link'] = urljoin(response.url, site.select('a[2]/@href').extract())
答案 1 :(得分: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
或者,如果您已将完全相同的网址添加到start_urls列表中(假设只有一个,则可以将base_url
替换为self.start_urls[0]