Python 以有组织的方式从网站获取信息

Python 以有组织的方式从网站获取信息,python,web-scraping,Python,Web Scraping,我正试图用Python对一个网站进行web清理,但遇到了一些问题。我已经在网上发了很多文章和问题,但我仍然不能做我需要做的事情。 我有这个网站: 我需要打印商店的名称和地址,并将其保存在文件中(可以是csv或excel)。我试过硒、熊猫、靓汤,但都不管用:( 有人能帮我吗 import requests from bs4 import BeautifulSoup page = requests.get("https://beta.nhs.uk/find-a-pharmacy/results

我正试图用Python对一个网站进行web清理,但遇到了一些问题。我已经在网上发了很多文章和问题,但我仍然不能做我需要做的事情。 我有这个网站:

我需要打印商店的名称和地址,并将其保存在文件中(可以是csv或excel)。我试过硒、熊猫、靓汤,但都不管用:(

有人能帮我吗

import requests
from bs4 import BeautifulSoup


page = requests.get("https://beta.nhs.uk/find-a-pharmacy/results?latitude=51.2457238068354&location=Little%20London%2C%20Hampshire%2C%20SP11&longitude=-1.45959328501975")

soup = BeautifulSoup(page.content, 'html.parser')
data = soup.find_all("div", class_="results__details")

for container in data:
  Pharmacyname = container.find_all("h2")
  Pharmacyadd  = container.find_all("p")
  for pharmacy in Pharmacyname:
      for add in Pharmacyadd:
          print(add.text)
          continue
      print(pharmacy.text)
输出:

Shepherds Spring Pharmacy Ltd is 1.8 miles away

       The Oval, 
       Cricketers Way, 

       Andover, 
       Hampshire, 
       SP10 5DN
      01264 355700

Map and directions for Shepherds Spring Pharmacy Ltd at The Oval
Services available in Shepherds Spring Pharmacy Ltd at The Oval
Open until 6:15pm today
Shepherds Spring Pharmacy Ltd
Tesco Instore Pharmacy is 2.1 miles away

       Tesco Superstore, 
       River  Way, 

       Andover, 
       Hampshire, 
       SP10 1UZ
      0345 677 9007

      .
      .
      .
注意:您可以为
药房\u name
pharmacy\u添加
以存储数据,然后写入文件。PS.您 还可以从列表中删除不需要的文本(比如 每个药店的电话号码后的文本)


您尝试使用的代码在哪里?^^还有多个结果-您是否只想检索一个、全部、第一页(如果有多页)?全部!!!我需要知道所有现有的商店这是一个非常漂亮的解决方案。您刚刚救了我!谢谢
import requests
from bs4 import BeautifulSoup
import re
import xlsxwriter

workbook  = xlsxwriter.Workbook('File.xlsx')
worksheet = workbook.add_worksheet()

request = requests.get("https://beta.nhs.uk/find-a-pharmacy/results?latitude=51.2457238068354&location=Little%20London%2C%20Hampshire%2C%20SP11&longitude=-1.45959328501975")
soup = BeautifulSoup(request.content, 'html.parser')
data = soup.find_all("div", class_="results__details")
formed_data=[]
for results_details in data:
    formed_data.append([results_details.find_all("h2")[0].text,re.sub(' +',' ',results_details.find_all("p")[1].text.replace('\n',''))])
row=col=0
for name, adress in (formed_data):
    worksheet.write(row, col, name)
    worksheet.write(row, col + 1, adress)
    row += 1
workbook.close()