首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >scrapy ratemyprofessor

scrapy ratemyprofessor
EN

Stack Overflow用户
提问于 2016-03-18 03:29:30
回答 2查看 100关注 0票数 0

我刚接触scrapy,已经在这个简单的程序上花了很多时间,但我搞不懂。我使用chrome检查此页面中所有教授的链接的x路径,并使用控制台测试xpath。当我把“正确的xpath”放在爬虫里面,它将不再工作,链接的大小返回0“我很困惑now.Could有人能帮我吗?

代码语言:javascript
复制
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
EN

回答 2

Stack Overflow用户

发布于 2016-03-18 06:21:36

代码语言:javascript
复制
//div[@class='result-list']/ul/li/a/@href

是xpath,但是请注意,页面生成的是一个非格式良好的xtml,因此,如果scrapy不能得到结果,我也不会感到惊讶。

票数 0
EN

Stack Overflow用户

发布于 2016-03-19 02:56:09

问题是网页对JavaScript的使用。当您在浏览器中打开url时,浏览器将执行JavaScript代码,并生成配置文件列表。

下面的表达式显示Scrapy默认情况下不执行JavaScript,因为它不包含JavaScript引擎。

代码语言:javascript
复制
//div[@class='result-list']/ul

结果为空列表:

代码语言:javascript
复制
<ul id="blog-item-list">

</ul>

你应该试试无头浏览器(PhantomJS等)。它将执行JavaScript。通过,Scrapy提供了自己的无头浏览器,可以很容易地与Scrapy下载中间件集成在一起。

https://github.com/scrapy-plugins/scrapy-splash

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36070004

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档