【发布时间】:2016-05-09 15:23:15
【问题描述】:
我是 python 新手。我通常使用php来爬取数据。我正在尝试切换到 python。我正在按照这里的教程进行操作。
http://doc.scrapy.org/en/latest/intro/tutorial.html
我希望从此维基百科页面抓取国家和首都。 https://en.wikipedia.org/wiki/List_of_national_capitals_in_alphabetical_order
我的蜘蛛程序是:
import scrapy
class CountrySpider(scrapy.Spider):
name = "countryCapitals"
allowed_domains = ["wikipedia.org"]
start_urls = [
"https://en.wikipedia.org/wiki/List_of_national_capitals_in_alphabetical_order"
]
def parse(self, response):
for sel in response.xpath('//*[@id="mw-content-text"]/table[2]/tbody/tr'):
country = sel.xpath('//td[1]').extract()
capital = sel.xpath('td[2]/b/span.text()').extract()
print country , capital
它没有按预期打印任何数据。对此的任何帮助表示赞赏。
【问题讨论】:
-
xpath返回的第一个打印值 - 可能是None或空列表 -
它不是空的,因为我在 chrome 开发者工具中检查了它。但它没有在这里打印。这里只是“打印 sel”吧?
-
print response.xpath( ... )。 “chrome 开发者工具”不是 python。它可以显示由 javascript 创建的数据。它显示解析为树对象的数据 - 而不是 HTML 源代码。例如,即使源文件中没有tbody,chrome 也会显示tbody。 -
tbody中的xpath可能是问题所在。 -
您应该尝试使用 Scrapy 手册中的技术进行调试:doc.scrapy.org/en/latest/topics/debug.html
标签: python xpath web-scraping scrapy