Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xpath在浏览器和scrapy中给出不同的结果_Xpath_Web Scraping_Scrapy - Fatal编程技术网

Xpath在浏览器和scrapy中给出不同的结果

Xpath在浏览器和scrapy中给出不同的结果,xpath,web-scraping,scrapy,Xpath,Web Scraping,Scrapy,我试图从这个网站上获取python课程信息: 我编写了一个xpath来选择标题文本: //div[@data purpose='course-card-title']/text() 当我在chrome上测试它时,它会给出39个匹配项,但我在scrapy上得到一个空列表。如注释中所述,您在浏览器中看到的数据是使用Javascript创建的。一种方法是将Selenium或Scrapy与splash一起使用,另一种方法是找到进行的API调用并直接使用它们 使用浏览器的DevTools(ctrl+sh

我试图从这个网站上获取python课程信息:

我编写了一个xpath来选择标题文本:

//div[@data purpose='course-card-title']/text()


当我在chrome上测试它时,它会给出39个匹配项,但我在scrapy上得到一个空列表。

如注释中所述,您在浏览器中看到的数据是使用Javascript创建的。一种方法是将Selenium或Scrapy与splash一起使用,另一种方法是找到进行的API调用并直接使用它们

使用浏览器的DevTools(ctrl+shift+c)并检查“网络”选项卡。查看重新加载页面后发生的情况。您应该注意到,存在对其API的请求,您可以使用和操作这些请求来获取所需的数据。从json格式的响应中,您可以提取要查找的数据

以下是一个简单的工作示例,用于打印您在页面顶部看到的课程标题:

import scrapy
导入json
类乌德迈斯皮德(刮毛蜘蛛):
name=“udemy”
起始URL=['https://www.udemy.com/api-2.0/discovery-units/?context=topic&from=0&page_size=10&item_count=12&excluded_course_ids=&label_id=7380&source_page=topic_page&locale=de_DE¤cy=eur&navigation_locale=en_US&skip_price=true']
def解析(自我,响应):
jsonresponse=json.loads(response.body_为_unicode())
对于jsonresponse['units'][0]['items']中的项:
打印(项目[“标题])
打印结果(至少对于德国用户)如下所示:

Python Bootcamp: Vom Anfänger zum Profi, inkl. Data Science
Python für Data Science, Machine Learning & Visualization
Data Science & Maschinelles Lernen in Python - am Beispiel
Machine Learning Komplettkurs mit Python inkl. AI Einführung
Python Bootcamp: Der Einstiegskurs
Python - Das Python Grundlagen Bootcamp - Von 0 auf 100!
Visualisiere Daten mit Python - auch für Anfänger!
Data Science, Apache Spark & Python: Analysiere echte Daten!
Fortgeschrittene Python Programmierung
Complete Python Bootcamp: Go from zero to hero in Python 3
Machine Learning A-Z™: Hands-On Python & R In Data Science
Python for Data Science and Machine Learning Bootcamp

Scrapy没有执行javascript,这是正常的chrome浏览器所做的,这就是为什么您看不到数据的原因。您正在使用的站点需要javascript。因此,要么使用硒,要么使用带有飞溅物的刮屑