Python 我怎样才能刮去一些不能被beautifulsoup获得的分区?
我想从你的网站上获取公司信息 与数据相关的Div部分是Python 我怎样才能刮去一些不能被beautifulsoup获得的分区?,python,html,web-scraping,beautifulsoup,webpage,Python,Html,Web Scraping,Beautifulsoup,Webpage,我想从你的网站上获取公司信息 与数据相关的Div部分是Div class=“col-xs-12 col-md-6 col-lg-6,但当运行以下代码提取所有类时,该类不可用 import requests from bs4 import BeautifulSoup page = requests.get("http://gyeonquartz.com/distributors-detailers/") soup = BeautifulSoup(page.content, 'html.parse
Div class=“col-xs-12 col-md-6 col-lg-6
,但当运行以下代码提取所有类时,该类不可用
import requests
from bs4 import BeautifulSoup
page = requests.get("http://gyeonquartz.com/distributors-detailers/")
soup = BeautifulSoup(page.content, 'html.parser')
print(soup.prettify())
当我们检查网络源时,所有经销商的详细信息都在
div class=“col-xs-12 col-md-6 col-lg-6”下给出“
但是在解析过程中,没有这样的div。如果查看页面源代码,您会发现您要查找的div标记都不存在于页面的源代码中。因为请求只发出初始请求,不加载javascript所做的任何动态内容,所以您要查找的标记不包含在返回的html中
要获取动态内容,您需要这样做,否则问题不在于解析器,而在于内容
与的解决方案非常类似,通过ajax请求加载页面后,将填充要废弃的数据。当您通过python请求库发出请求时,只会收到html页面 你有两个选择
import requests
from bs4 import BeautifulSoup
import pandas as pd
page = requests.get("http://gyeonquartz.com/wp-admin/admin-ajax.php?action=gyeon_load_partners")
print(page.json())
这将输出非常长的json。我已将其转换为数据帧以更好地查看它
import requests
from bs4 import BeautifulSoup
import pandas as pd
page = requests.get("http://gyeonquartz.com/wp-admin/admin-ajax.php?action=gyeon_load_partners")
df=pd.DataFrame.from_dict(page.json())
df['address'] = [BeautifulSoup(text,'html.parser').get_text().replace("\r\n","") for text in df['address'] ]
print(df) #just use df if in jupyter notebook
我的jupyter笔记本的输出示例如下。
非常感谢,它成功了。但我还有一些需要澄清的问题:1)如何找到ajax文件的名称及其地址?您让我在网络上检查XHR(在开发人员模式下),但我看不到它,我指的是如何找到page=requests.get(“)的地址