Scrapy で XPath を使用すると問題が発生します。
テーブル内のリンクを見ています - ブラウザでは、要素を表示すると完全なリンクがリストされます。ただし、スクレイピーシェルはリンクの端を切り落としています。
表からのリンクの例:
http://www.ashp.org/DrugShortages/Current/Bulletin.aspx?id=463
要素を検査する場合:
<a href="/DrugShortages/Current/Bulletin.aspx?id=463">
Scrapy シェルで抽出すると、463 が削除されます。
何か案は?
これがスパイダーのコードです。リンクをクロールするようにまだ実際に設定していませんが、最初に正しい XPath 構文ですべてを設定することを考えました。
from scrapy.spider import BaseSpider
from scrapy.selector import HtmlXPathSelector
from ashp.items import AshpItem
class MySpider(BaseSpider):
name = "ashp"
allowed_domains = ["ashp.org"]
start_urls = ["http://ashp.org/menu/DrugShortages/CurrentShortages"]
def parse(self, response):
hxs = HtmlXPathSelector(response)
titles = hxs.select("//span[@class='pl']")
for titles in titles:
title = titles.select("a/text()").extract()
link = titles.select("a/@href").extract()
print title, link