python - 我正在尝试对网站进行网络抓取,当我尝试将其转换为 csv 文件时,数据不会进入正确的列
问题描述
我是网络抓取的新手,为了练习,我正在尝试抓取一个网站并将结果转换为 csv 文件。当我来到将结果转换为 csv 文件的部分时,它并没有将地址放在地址列中。我希望数据进入地址列。代码如下。
from urllib.request import urlopen as uReq
from bs4 import BeautifulSoup as soup
my_url = 'https://www.allagents.co.uk/find-agent/london/'
uClient = uReq(my_url)
page_html = uClient.read()
uClient.close()
page_soup = soup(page_html, 'html.parser')
containers = page_soup.findAll('div', {'class':'itemlabel3'})
filename = "webscrape.csv"
f = open(filename, "w")
headers = "Company Name, Address, Telephone Number\n"
f.write(headers)
for container in containers:
comp_name = container.find('div', {'class':'labelleft2 col-md-
10'}).div.h4.a.text
address = container.find('div', {'class':'labelleft2 col-md-
10'}).div.p.text
tel = container.find('div', {'class':'labelleft2 col-md-
10'}).div.find('p', {'style':'clear: both; margin-bottom:
15px;'}).strong.text
print("Company Name:", comp_name)
print("Address:", address)
print("Telephone", tel)
f.write(comp_name.replace(",", ("|")) + "," + address.replace(",", ("|")) +
"," + tel + "\n")
f.close()
任何帮助表示赞赏。提前谢谢你。
解决方案
似乎在您的地址数据中存在换行符
尝试在您的代码中替换以下行以获取地址并尝试再次运行
address=(container.find('div', {'class':'labelleft2 col-md-10'}).div.p.text).replace('\n','')
推荐阅读
- c++ - 从 utsname 中找出 Linux 操作系统名称
- opengl - 配置VAO和VBO时,顶点数据数组是否应该使用相同的方法?(OpenGL)
- javascript - 为重复项过滤 redux 存储项数组
- python-3.x - 将递归函数更改为迭代
- git - 使用合并将两个相同的文件合二为一?
- ruby - 捕获从 Ruby 内部运行的交互式外部命令的输出
- c# - 我如何 ExchangeService.FindItems 查找所有电子邮件
- c# - 根据另一个字段的更改将字段设置为需要
- python - 是否可以使用基于类的视图而不是基于函数的视图 wagtail?
- xamarin - Xamarin 中的标签页