【发布时间】:2020-04-12 01:05:50
【问题描述】:
我是 python 网络抓取的新手,我试图获取加拿大不同 winmar 位置的地址,并将结果放入 csv 文件中。到目前为止,我发现区分不同地点的唯一方法是通过地址末尾的代码(数字)。问题是结果不会随着程序的运行而改变,而是在打印到 csv 文件时产生第一个位置 (305) 的结果。感谢您的时间和考虑!
这是我的代码:
import csv
import requests
from bs4 import BeautifulSoup
x = 0
numbers = ['305', '405', '306', '307', '308', '309', '4273']
f = csv.writer(open('Winmar_locations.csv', 'w'))
f.writerow(['City:', 'Address:'])
for links in numbers:
for x in range(0, 6):
url = 'https://www.winmar.ca/find-a-location/' + str(numbers[x])
r = requests.get(url)
soup = BeautifulSoup(r.content, "html.parser")
location_name = soup.find("div", attrs={"class": "title_block"})
location_name_items = location_name.find_all('h2')
location_list = soup.find(class_='quick_info')
location_list_items = location_list.find_all('p')
for name in location_name_items:
names = name.text
names = names.replace('Location | ', '')
for location in location_list_items:
locations = location.text.strip()
locations = locations.replace('24 Hour Emergency | (902) 679-1116','')
print(names, locations)
x = x+1
f.writerow([names, locations])
【问题讨论】:
标签: python web-scraping beautifulsoup