在我的网站上,我创建了两个简单的页面: 这是他们的第一个html脚本:
test1.html:
<head>
<title>test1</title>
</head>
<body>
<a href="test2.html" onclick="javascript:return xt_click(this, "C", "1", "Product", "N");" indepth="true">
<span>cool</span></a>
</body></html>
test2.html:
<head>
<title>test2</title>
</head>
<body></body></html>
我想在两个页面的标题标签中抓取文字。这是&#34; test1&#34;和&#34; test2&#34;。 但我是scrapy的新手我只会在第一页上刮刮。 我的scrapy脚本:
from scrapy.spider import Spider
from scrapy.selector import Selector
from testscrapy1.items import Website
class DmozSpider(Spider):
name = "bill"
allowed_domains = ["http://exemple.com"]
start_urls = [
"http://www.exemple.com/test1.html"
]
def parse(self, response):
sel = Selector(response)
sites = sel.xpath('//head')
items = []
for site in sites:
item = Website()
item['title'] = site.xpath('//title/text()').extract()
items.append(item)
return items
如何通过onclik? 以及如何成功抓取第二页标题标签的文本? 先感谢您 STEF
答案 0 :(得分:0)
要在代码中使用多个函数,发送多个请求并解析它们,您将需要:1)产生而不是返回,2)回调。
示例:
def parse(self,response):
for site in response.xpath('//head'):
item = Website()
item['title'] = site.xpath('//title/text()').extract()
yield item
yield scrapy.Request(url="http://www.domain.com", callback=self.other_function)
def other_function(self,response):
for other_thing in response.xpath('//this_xpath')
item = Website()
item['title'] = other_thing.xpath('//this/and/that').extract()
yield item
您无法使用scrapy解析javascript,但您可以了解javascript的功能并执行相同的操作:http://doc.scrapy.org/en/latest/topics/firebug.html