【发布时间】:2014-04-02 03:33:38
【问题描述】:
我尝试在此页面上使用 igaggini 的示例,但似乎无法让它与我的代码一起使用。 Scrapy: Follow link to get additional Item data?
我很确定我有正确的 xpath,输出应该是从国家页面抓取的链接的第一个 div 中的第二段。
这是我的主文件,recursive.py。
from scrapy.spider import BaseSpider
from bathUni.items import BathuniItem
from scrapy.selector import HtmlXPathSelector
from scrapy.http.request import Request
from urlparse import urljoin
class recursiveSpider(BaseSpider):
name = 'recursive'
allowed_domains = ['http://www.bristol.ac.uk/']
start_urls = ['http://www.bristol.ac.uk/international/countries/']
def parse(self, response):
hxs = HtmlXPathSelector(response)
links = []
#scrap main page to get row links
for i in range(1, 154):
xpath = ('//*[@id="all-countries"]/li[*]/ul/li[*]/a' .format (i+1))
link = hxs.select(xpath).extract()
links.append(link)
#parse links to get content of the linked pages
for link in links:
item = BathuniItem()
item ['Qualification'] = hxs.select('//*[@id="uobcms-content"]/div/div/div[1]/p[2]')
yield item
这是我的物品文件
from scrapy.item import Item, Field
class BathuniItem(Item):
Country = Field()
Qualification = Field()
而且我收到的输出不是我想要的,我的 csv 文件充满了这些 -
<HtmlXPathSelector xpath='//*[@id="all-countries"]/li[*]/ul/li[*]/a' data=u'<a href="/international/countries/albani'>
【问题讨论】:
-
只是一个提示:所有
[*]谓词都是不必要的,例如。您匹配具有任何子元素的所有列表项,然后选择那些未排序的列表(如果有子元素,它只会返回结果)。
标签: python html csv xpath scrapy