【发布时间】:2013-04-24 14:13:11
【问题描述】:
我正在尝试从该站点抓取代理机构的电话号码:
列表视图 http://www.authoradvance.com/agencies/
详细视图 http://www.authoradvance.com/agencies/b-personal-management/
电话号码隐藏在详细信息页面中。
那么是否可以通过像上面的详细视图 url 这样的 url 浏览网站并抓取电话号码?
我对这段代码的尝试是:
from scrapy.item import Item, Field
class AgencyItem(Item):
Phone = Field()
from scrapy.contrib.spiders import CrawlSpider, Rule
from scrapy.contrib.linkextractors.sgml import SgmlLinkExtractor
from scrapy.selector import HtmlXPathSelector
from agentquery.items import AgencyItem
class AgencySpider(CrawlSpider):
name = "agency"
allowed_domains = ["authoradvance.com"]
start_urls = ["http://www.authoradvance.com/agencies/"]
rules = (Rule(SgmlLinkExtractor(allow=[r'agencies/*$']), callback='parse_item'),)
def parse_item(self, response):
hxs = HtmlXPathSelector(response)
sites = hxs.select("//div[@class='section-content']")
items = []
for site in sites:
item = AgencyItem()
item['Phone'] = site.select('div[@class="phone"]/text()').extract()
items.append(item)
return(items)
然后我运行“scrapy crawl Agency -o items.csv -t csv” 结果爬取了0页。
怎么了?提前感谢您的帮助!
【问题讨论】:
-
如果您想自己检查代码的哪一部分失败,您可以使用 python 调试器 pdb (docs.python.org/2/library/pdb.html) 之类的东西,它允许您在任意点停止代码的执行.通过这种方式,您可以轻松找出问题是否是正则表达式,并相应地完善您的问题,从而更容易回答!
标签: python screen-scraping scrapy web-crawler