试图刮Y!我和小组可以从一个页面获取数据,但就是这样。我有一些基本的规则,但很明显他们是不对的。有人已经解决了这个吗?
class YgroupSpider(CrawlSpider):
name = "yahoo.com"
allowed_domains = ["launch.groups.yahoo.com"]
start_urls = [
"http://launch.groups.yahoo.com/group/random_public_ygroup/post"
]
rules = (
Rule(SgmlLinkExtractor(allow=('message','messages' ), deny=('mygroups', ))),
Rule(SgmlLinkExtractor(), callback='parse_item'),
)
def parse_item(self, response):
hxs = HtmlXPathSelector(response)
sites = hxs.select('/html')
item = Item()
for site in sites:
item = YgroupItem()
item['title'] = site.select('//title').extract()
item['pubDate'] = site.select('//abbr[@class="updated"]/text()').extract()
item['desc'] = site.select("//div[contains(concat(' ',normalize-space(@class),' '),' entry-content ')]/text()").extract()
return item
答案 0 :(得分:0)
看起来你几乎不知道自己在做什么。我对Scrapy很新,但我想你会想要有类似的东西
Rule(SgmlLinkExtractor(allow=('http\://example\.com/message/.*\.aspx', )), callback='parse_item'),
尝试编写与您想要的完整链接URL匹配的正则表达式。此外,看起来您只需要一条规则。将回调添加到第一个回调。链接提取器匹配与allow中的正则表达式匹配的每个链接,并从那些排除那些与deny匹配的链接,并从那里加载每个剩余页面并传递给parse_item
。
我说这一切都是在不了解您正在进行数据挖掘的页面以及您想要的数据的性质的情况下。您希望这种类型的蜘蛛可以链接到包含您想要的数据的页面。