我需要刮擦网站"https://www.mahindrausa.com/map-hours-directions-tractors-utvs-farming-equipment--dealership--locate-a-dealer" “找到他们的经销商的名称,地点,电话号码等在美国的每个州。
我正在尝试使用漂亮的汤库,但是我无法在'li'在网站上。下面是我的代码:
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')有谁能帮帮我吗?
发布于 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
然而,不是从这个文件中调用的,这看起来像是死胡同,但请注意他们放的注释:
// 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,并且不需要与任何库发生冲突。
发布于 2020-07-08 19:02:02
你能使用Selenium和chrome-driver来抓取吗?
https://stackoverflow.com/questions/62792838
复制相似问题