这里是网络开发新手。所以请友善点
我发现这个标签对我来说真的很奇怪
考虑以下HTML文档:
import urllib3
from bs4 import BeautifulSoup
url = 'https://www.carrefourkuwait.com/mafkwt/en/Frozen-Food/c/FKWT6000000?currentPage=1&filter=&nextPageOffset=0&pageSize=60&sortBy=relevance'
req = urllib3.PoolManager()
res = req.request('GET', url)
soup = BeautifulSoup(res.data, 'html.parser')
soup
我想知道产品的名称和价格。但是使用soup.findAll('div', {'data-testid': 'product_name'})
不起作用
这里的问题是,产品名称和价格是<a\>
标记中链接的属性。即使有soup.findAll('a')
我也一无所获:[]
我也无法滚动页面。我写了这段代码,但它不起作用(继续给我第=1页的副本)
tag = 'Bakery/c/FKWT1610000'
scrap_all = pd.DataFrame()
for x in tqdm(range(1,10)):
scrap_page = pd.DataFrame()
r = requests.get(parent_url+tag+'?currentPage='+str(x)+'&filter=&nextPageOffset=0&pageSize=200&sortBy=relevance',
headers = {'User-Agent':'Mozilla/5.0'})
data = json.loads(re.search(r'(\{"prop.*\})', r.text).group(1))
data = data['props']['initialState']['search']['products']
scrap_page['item_desc'] = [i['name'] for i in data]
scrap_page['item_price'] = [i['originalPrice'] for i in data]
scrap_carrefour = pd.concat([scrap_carrefour,scrap_page])
数据是从脚本标记中动态提取的。由于javascript不会与请求一起运行,因此此信息会保留在脚本标记中,并且不会出现在您正在查看的位置
您可以将包含相关信息的字符串正则化,使用json进行解析,并创建一个dict,如下所示:
相关问题 更多 >
编程相关推荐