繁体   English   中英

Python>bs4 根据下拉列表中的选择抓取网站

[英]Python>bs4 Scraping website based on choice from dropdown list

例如,我有一个超市网站,其中有一个部分显示市场的商店。 用于选择位置的下拉列表存在。 我想做的是基于我从下拉列表中的选择,我想获得商店数量(蓝框)。 这是图片;

在此处输入图像描述

我通过以下代码完成了从下拉列表中获取值:

import requests
from bs4 import BeautifulSoup

url="https://www.migros.com.tr/en-yakin-migros"

r=requests.get(url)
ht=r.content
soup=BeautifulSoup(ht,"html.parser")


soup= soup.find("div",class_="stores-selection-container stores-city-select address-part")
items=soup.select("option[value]")

#values=[item.get("value") for item in items]

cities=[item.text for item in items]
del cities[0] #first index is empty and removed

在那之后,我被困住了。 我想要的是告诉计算机 select 从下拉列表中的城市(来自城市列表)然后获取数字(蓝框)

如果你能告诉我我需要走的路,我将不胜感激。

这里需要使用数据请求发布请求。 从开发网络水龙头收集的数据。

import requests
from bs4 import BeautifulSoup

# url="https://www.migros.com.tr/en-yakin-migros"

# r=requests.get(url)

data1 = {"cityName": "İSTANBUL",
"townName": "ADALAR",
"cityId": '', 
"townId": "34001"}
# 1 Mağaza Listeleniyor


# cityName: İSTANBUL
# townName: BAĞCILAR
# cityId: 34
# townId: 34025
    
data = {"cityName": "İSTANBUL",
"townName": "BAĞCILAR",
"cityId": '34', 
"townId": "34025"} 
# 11 Mağaza Listeleniyor

# cityName: İZMIR
# townName: ÇIĞLI
# cityId: 35
# townId: 35025

# 15 Mağaza Listeleniyor    

# cityName: İSTANBUL
# townName: ADALAR
# cityId: 
# townId: 34001

# cityName: İSTANBUL
# townName: ADALAR
# cityId: 
# townId: 34001

post_url = "https://www.migros.com.tr/stores"

response = requests.post(post_url, data=data)
print(response.status_code)
print()
soup=BeautifulSoup(response.content,"html.parser")
print(soup)

# soup= soup.find("div",class_="stores-selection-container stores-city-select address-part")
# items=soup.select("option[value]")
# items
# print('soup')

#values=[item.get("value") for item in items]

# cities=[item.text for item in items]
# cities
# del cities[0] #first index is empty and removed

希望对你有所帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM