Python 我的组上没有文本
我想刮电子商务网站,我已经解析了html,但为什么我的解析不包含div类上的任何文本Python 我的组上没有文本,python,web-scraping,beautifulsoup,Python,Web Scraping,Beautifulsoup,我想刮电子商务网站,我已经解析了html,但为什么我的解析不包含div类上的任何文本 这些产品是使用json资源中的javascript加载的,这就是为什么在请求的响应中找不到任何内容 您需要发出此请求才能获得产品: import requests headers = { 'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:76.0) Gecko/20100101 Firefox/76.0', 'Ac
这些产品是使用json资源中的javascript加载的,这就是为什么在请求的响应中找不到任何内容 您需要发出此请求才能获得产品:
import requests
headers = {
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:76.0) Gecko/20100101 Firefox/76.0',
'Accept': 'application/json, text/javascript, */*; q=0.01',
'Accept-Language': 'en-US,en;q=0.5',
'Content-Type': 'application/json; charset=utf-8;',
'X-Requested-With': 'XMLHttpRequest',
'Connection': 'keep-alive',
'Referer': 'https://www.bhinneka.com/jual?cari=iphone&catId=3457215&page=1',
'Pragma': 'no-cache',
'Cache-Control': 'no-cache', }
params = (
('size', '40'),
('brand', ''),
('q', 'iphone'),
('catid', '3457215'),
('catselect', '3457215'),
('page', '1'),
('_', '1590651955014'), )
response = requests.get('https://www.bhinneka.com/search/data', headers=headers, params=params)
products = response.json()
您可以调整参数以获取所有页面。产品是使用json资源中的javascript加载的,这就是您在请求响应中找不到任何内容的原因 您需要发出此请求才能获得产品:
import requests
headers = {
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:76.0) Gecko/20100101 Firefox/76.0',
'Accept': 'application/json, text/javascript, */*; q=0.01',
'Accept-Language': 'en-US,en;q=0.5',
'Content-Type': 'application/json; charset=utf-8;',
'X-Requested-With': 'XMLHttpRequest',
'Connection': 'keep-alive',
'Referer': 'https://www.bhinneka.com/jual?cari=iphone&catId=3457215&page=1',
'Pragma': 'no-cache',
'Cache-Control': 'no-cache', }
params = (
('size', '40'),
('brand', ''),
('q', 'iphone'),
('catid', '3457215'),
('catselect', '3457215'),
('page', '1'),
('_', '1590651955014'), )
response = requests.get('https://www.bhinneka.com/search/data', headers=headers, params=params)
products = response.json()
您可以调整参数以获得所有页面。您在页面上看到的数据是通过JavaScript加载的。您可以使用
请求
库来模拟此调用
例如:
import requests
from bs4 import BeautifulSoup
url = 'https://www.bhinneka.com/jual?cari=iphone&catId=3457215'
ajax_url = 'https://www.bhinneka.com/search/data?size=40&brand=&q=iphone&catid={cat_id}&catselect={cat_id}'
cat_id = url.rsplit('=', maxsplit=1)[-1]
data = requests.get(ajax_url.format(cat_id=cat_id), headers={'X-Requested-With':'XMLHttpRequest'}).json()
soup = BeautifulSoup(data['data'], 'html.parser')
for prod in soup.select('.col-sm-3.bt-product-catalog-item__price'):
name = prod.select_one('.bt-product-catalog-item__title').get_text(strip=True)
price = prod.select_one('p.bt-product-catalog-item__price-normal').get_text(strip=True)
# convert to int
price = int( price.rsplit('.', maxsplit=1)[0].split()[-1].replace('.', '') )
print('{:<50}{}'.format(name, price))
您在页面上看到的数据是通过JavaScript加载的。您可以使用
请求
库来模拟此调用
例如:
import requests
from bs4 import BeautifulSoup
url = 'https://www.bhinneka.com/jual?cari=iphone&catId=3457215'
ajax_url = 'https://www.bhinneka.com/search/data?size=40&brand=&q=iphone&catid={cat_id}&catselect={cat_id}'
cat_id = url.rsplit('=', maxsplit=1)[-1]
data = requests.get(ajax_url.format(cat_id=cat_id), headers={'X-Requested-With':'XMLHttpRequest'}).json()
soup = BeautifulSoup(data['data'], 'html.parser')
for prod in soup.select('.col-sm-3.bt-product-catalog-item__price'):
name = prod.select_one('.bt-product-catalog-item__title').get_text(strip=True)
price = prod.select_one('p.bt-product-catalog-item__price-normal').get_text(strip=True)
# convert to int
price = int( price.rsplit('.', maxsplit=1)[0].split()[-1].replace('.', '') )
print('{:<50}{}'.format(name, price))
请显示,您的预期输出是什么?回答您的问题对我们有帮助吗?请说明,您的预期产量是多少?回答你的问题会对我们有帮助吗?谢谢兄弟,但我这里有一些问题,我只想取整数(价格)如何使它只是一个数字(在价格变量中)?谢谢兄弟,但我这里有一些问题,我只想取整数(价格)如何使它只是一个数字(在价格变量中)?