我试图用scrapy来抓取craigslist,并且已经成功地获得了url,但是现在我想从url中的页面中提取数据。代码如下:
from scrapy.spider import BaseSpider
from scrapy.selector import HtmlXPathSelector
from craigslist.items import CraigslistItem
class craigslist_spider(BaseSpider):
name = "craigslist_unique"
allowed_domains = ["craiglist.org"]
start_urls = [
"http://sfbay.craigslist.org/search/sof?zoomToPosting=&query=&srchType=A&addFour=part-time",
"http://newyork.craigslist.org/search/sof?zoomToPosting=&query=&srchType=A&addThree=internship",
"http://seattle.craigslist.org/search/sof?zoomToPosting=&query=&srchType=A&addFour=part-time"
]
def parse(self, response):
hxs = HtmlXPathSelector(response)
sites = hxs.select("//span[@class='pl']")
items = []
for site in sites:
item = CraigslistItem()
item['title'] = site.select('a/text()').extract()
item['link'] = site.select('a/@href').extract()
#item['desc'] = site.select('text()').extract()
items.append(item)
hxs = HtmlXPathSelector(response)
#print title, link
return items
我是新来的scrapy,无法弄清楚如何真正地点击url(href)并在该url的页面内获取数据,并对所有url执行该操作。在
在
parse
方法中,逐个接收start_urls
的响应如果您只想从
start_urls
响应中获取信息,那么您的代码就可以了。但是您的解析方法应该在您的craigslist_spider
类中,而不是在该类之外。在如果您想从起始URL获取一半信息,从
^{pr2}$start_urls
响应中的anchor
获取一半信息,该怎么办?在您只需要在parse方法中}
yield Request
,并使用Request
的meta
来发送{然后在
anchor_page
中提取old_item
,在其中添加新值并简单地生成它。在你的xpath有个问题-它们应该是相对的。代码如下:
如果通过以下方式运行:
^{pr2}$你会看到的输出.json公司名称:
希望有帮助。在
相关问题 更多 >
编程相关推荐