首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >网页抓取Mahindra wesite

网页抓取Mahindra wesite
EN

Stack Overflow用户
提问于 2020-07-08 18:34:26
回答 2查看 82关注 0票数 0

我需要刮擦网站"https://www.mahindrausa.com/map-hours-directions-tractors-utvs-farming-equipment--dealership--locate-a-dealer" “找到他们的经销商的名称,地点,电话号码等在美国的每个州。

我正在尝试使用漂亮的汤库,但是我无法在'li'在网站上。下面是我的代码:

代码语言:javascript
复制
from bs4 import BeautifulSoup
import requests
import pandas as pd

page=requests.get('https://www.mahindrausa.com/map-hours-directions-tractors-utvs-farming-equipment--dealership--locate-a-dealer')
soup=BeautifulSoup(page.content,'html.parser')
a=soup.find('div',id="content")
b=a.find_all('h3',class_='lad__by-state--title')
lis=a.find_all('li')

有谁能帮帮我吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-07-08 20:23:28

也许有一些一般性的建议,首先:

您可以通过在浏览器的检查工具中关闭JavaScript来检查内容是否动态加载。您将看到,在未启用JavaScript的情况下,您要查找的数据不会被加载。因为BeautifulSoup不能执行JavaScript,所以你不能在这里使用它。

接下来,您将尝试检查浏览器的检查工具的Network选项卡,并分析加载的脚本。如果不清楚需要哪些脚本来加载您试图抓取的数据,请阻止它们(在脚本上单击鼠标右键)。阻止它们,直到找到用于加载数据的脚本。在这里,您将很快看到它是locate-a-dealer.js..。

打开脚本并尝试查找用于加载数据的函数。我检查了网站的DOM,发现他们使用lad__-prefix来填充网站,所以我在JavaScript文件中搜索了该术语。我发现了一个看起来很有前途的函数(buildLeftList)并遵循它(查看哪些函数调用buildLeftList),即buildMarkers,它也是从eqfeed_callback..。eqfeed_callback

然而,不是从这个文件中调用的,这看起来像是死胡同,但请注意他们放的注释:

代码语言:js
复制
// generate markers from locations.js file

这听起来很有希望!让我们看看这是什么:

locate-a-dealer存储在https://www.mahindrausa.com/js/locate-a-dealer.js?v=1.17d,所以让我们试着看看https://www.mahindrausa.com/js/locations.js..。

答对了!我们绝对可以将其解析为JSON,并且不需要与任何库发生冲突。

票数 0
EN

Stack Overflow用户

发布于 2020-07-08 19:02:02

你能使用Selenium和chrome-driver来抓取吗?

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

https://stackoverflow.com/questions/62792838

复制
相关文章

相似问题

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