Python 3.x 如何使用Ajax方法获取网站数据
我正在尝试获取此url中的所有商店位置 我目前使用这种方法Python 3.x 如何使用Ajax方法获取网站数据,python-3.x,ajax,beautifulsoup,Python 3.x,Ajax,Beautifulsoup,我正在尝试获取此url中的所有商店位置 我目前使用这种方法 def getAllStoreLocation(): session = requests.Session() url = "https://www.walmart.com/store/finder?location=Pennsylvani&distance=100" try: stateStoreSoup = BeautifulSoup(session.get(url).text, 'html
def getAllStoreLocation():
session = requests.Session()
url = "https://www.walmart.com/store/finder?location=Pennsylvani&distance=100"
try:
stateStoreSoup = BeautifulSoup(session.get(url).text, 'html.parser')
stateTagId = find_tag(stateStoreSoup)
stateScript = stateStoreSoup.find("script", {"id":stateTagId})
stateData = json.loads(stateScript.get_text(strip=True))
except Exception as e:
print(e)
tagId函数
def find_tag(soup):
script = soup.find('script', {'type': 'application/json', 'id':re.compile(r'^((?!tb-djs).)*$')})
return script['id']
这是可行的,但会产生太多不需要的数据。我想用这个答案中的方法
获取所有存储数据的列表
如何使用答案中的Ajax方法获取存储位置数据。请告诉我,我只熟悉beautifulsoup,不熟悉Ajax,所以我非常感谢您对的良好解释
代码我注意到您使用另一个python库请求给出的答案 如果尚未安装库,请尝试
pip安装请求
并尝试像这样使用这些URL来获取数据
我注意到您使用另一个python库请求给出的答案 如果尚未安装库,请尝试
pip安装请求
并尝试像这样使用这些URL来获取数据
导入请求
进口稀土
def主(url):
r=请求。获取(url)
match=[x.group(1)代表re.finditer(r“address\”:({.*?})”,r.text中的x]
对于匹配的项目:
项目=评估(项目)
打印(“城市:{:导入请求
进口稀土
def主(url):
r=请求。获取(url)
match=[x.group(1)代表re.finditer(r“address\”:({.*?})”,r.text中的x]
对于匹配的项目:
项目=评估(项目)
印刷(“城市:{:您是如何找到URL的?您需要尝试使用一些工具分析网络请求。在Chorme中,您可以按f12,您将看到“开发工具”和“查找网络”选项卡,尝试在页面中更改参数,您将发现页面发出了一些ajax请求,当您更改参数时,显示您是否能够找到URL?您需要尝试分析网络请求通过一些工具。在Chorme中,您可以按f12键,您将看到“开发工具”和“查找网络”选项卡,尝试在页面中更改参数,您将发现页面发出了一些ajax请求,当您更改参数时,请您解释一下页面中的情况match@learner101我使用了re
,这是我匹配地址的Regex
page source中的模式。好的,谢谢,如何将每个存储id包括在抓取中每个存储id都有以#开头的存储id,并存储在class=“result element store number”中@learner101下次你必须在你的问题中包含这样的细节,不管怎样,我已经更新了我的答案。请你解释一下这里面发生了什么match@learner101我使用了re
,这是Regex
,我在页面源代码中匹配了address
模式。好的,谢谢你,每个存储如何id将包含在抓取中每个存储区都有以#开头的storeid,并存储在class=“result element store number”@learner101中。下次您必须将此类详细信息包含在您的问题中,以便查询。无论如何,我已经更新了我的答案。
City: Montoursville , Address: 1015 N Loyalsock Ave
City: Mill Hall , Address: 167 Hogan Blvd
City: Lewisburg , Address: 120 Ajk Blvd
City: Selinsgrove , Address: 980 N Susquehanna Trl
City: Bloomsburg , Address: 100 Lunger Dr
City: Mansfield , Address: 1169 S Main St
City: State College , Address: 373 Benner Pike
City: State College , Address: 1665 N Atherton St
City: Coal Township , Address: 9300 State Route 61
City: Lewistown , Address: 10180 Us Highway 522 S
City: Elizabethville , Address: 200 Kocher Ln
City: Saint Clair , Address: 500 Terry Rich Blvd
City: Sayre , Address: 1887 Elmira St
City: Hazle Township , Address: 761 Airport Rd
City: Clearfield , Address: 100 Supercenter Dr
City: Painted Post , Address: 3217 Silverback Ln
City: Huntingdon , Address: 6716 Towne Center Blvd
City: Mechanicsburg , Address: 6520 Carlisle Pike Ste 550
City: Tamaqua , Address: 35 Plaza Dr
City: Horseheads , Address: 1400 County Rd 64
City: Tunkhannock , Address: 808 Hunter Hwy
City: Harrisburg , Address: 6535 Grayson Rd
City: Camp Hill , Address: 3400 Hartzdale Drive
City: Palmyra , Address: 100 No Londonderry Square
City: Wilkes Barre , Address: 2150 Wilkes Barre Twnsp Mktpl
City: Carlisle , Address: 60 Noble Blvd
City: Saint Marys , Address: 1102 Million Dollar Hwy
City: Lebanon , Address: 1355 E Lehman St
City: Pittston , Address: 390 Route 315 Hwy
City: Etters , Address: 50 Newberry Pkwy
City: Hamburg , Address: 1800 Tilden Ridge
City: Taylor , Address: 1325 Main
City: Du Bois , Address: 20 Industrial Dr
City: Shippensburg , Address: 100 S Conestoga Dr
City: Lehighton , Address: 1731 Blakeslee Boulevard Dr E
City: Altoona , Address: 2600 Plank Road Commons
City: Dickson City , Address: 900 Commerce Blvd
City: Hornell , Address: 1000 State Route 36
City: Watkins Glen , Address: 515 E 4th St
City: Temple , Address: 5370 Allentown Pike
City: Duncansville , Address: 200 Commerce Dr
City: Vestal , Address: 2405 Vestal Pkwy E
City: Wyomissing , Address: 1135 Berkshire Blvd
City: York , Address: 1000 Town Center Drive
City: York , Address: 2801 E Market St Bldg B
City: Olean , Address: 1869 Plaza Dr
City: Ephrata , Address: 890 E Main St
City: Johnson City , Address: 2 Gannett Dr
City: Lancaster , Address: 2030 Fruitville Pike
City: Bradford , Address: 50 Foster Brook Blvd
import requests
import re
def main(url):
r = requests.get(url)
match = [x.group(1, 2) for x in re.finditer(
r',"id":(.*?),.*?address\":({.*?})', r.text)]
for a, b in match:
item = eval(b)
idf = a
print("ID: {}, City: {:<30}, Address: {}".format(idf,
item['city'], item['address']))
main("https://www.walmart.com/store/finder?location=Pennsylvani&distance=100")
ID: 1887, City: Montoursville , Address: 1015 N Loyalsock Ave
ID: 2528, City: Mill Hall , Address: 167 Hogan Blvd
ID: 1644, City: Lewisburg , Address: 120 Ajk Blvd
ID: 2185, City: Selinsgrove , Address: 980 N Susquehanna Trl
ID: 1794, City: Bloomsburg , Address: 100 Lunger Dr
ID: 1945, City: Mansfield , Address: 1169 S Main St
ID: 2230, City: State College , Address: 373 Benner Pike
ID: 1640, City: State College , Address: 1665 N Atherton St
ID: 2481, City: Coal Township , Address: 9300 State Route 61
ID: 1607, City: Lewistown , Address: 10180 Us Highway 522 S
ID: 3412, City: Elizabethville , Address: 200 Kocher Ln
ID: 2535, City: Saint Clair , Address: 500 Terry Rich Blvd
ID: 2208, City: Sayre , Address: 1887 Elmira St
ID: 2255, City: Hazle Township , Address: 761 Airport Rd
ID: 2129, City: Clearfield , Address: 100 Supercenter Dr
ID: 2992, City: Painted Post , Address: 3217 Silverback Ln
ID: 5470, City: Huntingdon , Address: 6716 Towne Center Blvd
ID: 1886, City: Mechanicsburg , Address: 6520 Carlisle Pike Ste 550
ID: 3634, City: Tamaqua , Address: 35 Plaza Dr
ID: 1976, City: Horseheads , Address: 1400 County Rd 64
ID: 2024, City: Tunkhannock , Address: 808 Hunter Hwy
ID: 1591, City: Harrisburg , Address: 6535 Grayson Rd
ID: 5888, City: Camp Hill , Address: 3400 Hartzdale Drive
ID: 2888, City: Palmyra , Address: 100 No Londonderry Square
ID: 1623, City: Wilkes Barre , Address: 2150 Wilkes Barre Twnsp Mktpl
ID: 2574, City: Carlisle , Address: 60 Noble Blvd
ID: 1792, City: Saint Marys , Address: 1102 Million Dollar Hwy
ID: 2023, City: Lebanon , Address: 1355 E Lehman St
ID: 2543, City: Pittston , Address: 390 Route 315 Hwy
ID: 4404, City: Etters , Address: 50 Newberry Pkwy
ID: 4612, City: Hamburg , Address: 1800 Tilden Ridge
ID: 4276, City: Taylor , Address: 1325 Main
ID: 1769, City: Du Bois , Address: 20 Industrial Dr
ID: 5358, City: Shippensburg , Address: 100 S Conestoga Dr
ID: 2169, City: Lehighton , Address: 1731 Blakeslee Boulevard Dr E
ID: 2049, City: Altoona , Address: 2600 Plank Road Commons
ID: 1884, City: Dickson City , Address: 900 Commerce Blvd
ID: 2326, City: Hornell , Address: 1000 State Route 36
ID: 3221, City: Watkins Glen , Address: 515 E 4th St
ID: 2614, City: Temple , Address: 5370 Allentown Pike
ID: 4348, City: Duncansville , Address: 200 Commerce Dr
ID: 1835, City: Vestal , Address: 2405 Vestal Pkwy E
ID: 1670, City: Wyomissing , Address: 1135 Berkshire Blvd
ID: 2205, City: York , Address: 1000 Town Center Drive
ID: 1529, City: York , Address: 2801 E Market St Bldg B
ID: 2159, City: Olean , Address: 1869 Plaza Dr
ID: 2340, City: Ephrata , Address: 890 E Main St
ID: 5732, City: Johnson City , Address: 2 Gannett Dr
ID: 5200, City: Lancaster , Address: 2030 Fruitville Pike
ID: 3514, City: Bradford , Address: 50 Foster Brook Blvd