我刚接触scrapy,已经在这个简单的程序上花了很多时间,但我搞不懂。我使用chrome检查此页面中所有教授的链接的x路径,并使用控制台测试xpath。当我把“正确的xpath”放在爬虫里面,它将不再工作,链接的大小返回0“我很困惑now.Could有人能帮我吗?
import scrapy
from scraper.items import ScraperItem
from scrapy.contrib.spiders import Rule
from scrapy.contrib.linkextractors import LinkExtractor
class scraperSpider(scrapy.Spider):
name = "scraper"
allowed_domains = ["www.ratemyprofessors.com"]
start_urls = [
"http://www.ratemyprofessors.com/search.jsp?queryoption=TEACHER&queryBy=schoolDetails&schoolID=1584&schoolName=Utah+Valley+University&dept=Accounting"
]
def parse(self, response):
# professors = []
# create array of profile links
profiles = response.xpath('//*[@id="mainContent"]/div[1]/div/div[5]/ul/li/a/@href').extract()
print " size of profiles a " , len(profiles)
for link in profiles:
print link发布于 2016-03-18 06:21:36
//div[@class='result-list']/ul/li/a/@href是xpath,但是请注意,页面生成的是一个非格式良好的xtml,因此,如果scrapy不能得到结果,我也不会感到惊讶。
发布于 2016-03-19 02:56:09
问题是网页对JavaScript的使用。当您在浏览器中打开url时,浏览器将执行JavaScript代码,并生成配置文件列表。
下面的表达式显示Scrapy默认情况下不执行JavaScript,因为它不包含JavaScript引擎。
//div[@class='result-list']/ul结果为空列表:
<ul id="blog-item-list">
</ul>你应该试试无头浏览器(PhantomJS等)。它将执行JavaScript。通过,Scrapy提供了自己的无头浏览器,可以很容易地与Scrapy下载中间件集成在一起。
https://stackoverflow.com/questions/36070004
复制相似问题