python - 网络抓取问题以清理 CSV 表
问题描述
我正在尝试从表中抓取一些数据。我得到了我期望的结果,但我找不到将它们保存在干净的 CSV 表中的方法。这是代码,低于结果和我想要的。有什么建议吗?
from bs4 import BeautifulSoup
import urllib.request # web access
import csv
import re
url = "https://wsc.nmbe.ch/family/87/Senoculidae"
page = urllib.request.urlopen(url) # conntect to website
try:
page = urllib.request.urlopen(url)
except:
print("Ups!")
soup = BeautifulSoup(page, 'html.parser')
regex = re.compile('^speciesTitle')
content_lis = soup.find_all('div', attrs={'class': regex})
for li in content_lis:
con = li.get_text("#",strip=True).split("\n")[0]
print(con)
我得到了这些不错的输出:
Senoculus albidus#(F. O. Pickard-Cambridge, 1897)#|#| Brazil
Senoculus barroanus#Chickering, 1941#|#| Panama
Senoculus bucolicus#Chickering, 1941#|#| Panama
但我需要这样的东西(用分号或制表符分隔的 CSV):
Senoculus albidus;(F. O. Pickard-Cambridge, 1897);Brazil
Senoculus barroanus;Chickering1941;Panama
Senoculus bucolicus;Chickering, 1941;Panama
如何删除字符“|” 和一些空间?有什么建议吗?
此致
解决方案
此代码基于您的示例数据集工作:
lst=[
'Senoculus albidus#(F. O. Pickard-Cambridge, 1897)#|#| Brazil',
'Senoculus barroanus#Chickering, 1941#|#| Panama',
'Senoculus bucolicus#Chickering, 1941#|#| Panama'
]
lst2 = [s.replace('|',"").split('#') for s in lst]
lst3=[]
for s in lst2:
lst3.append(';'.join([sx.strip() for sx in s]).replace(';;',';'))
for s in lst3:
print(s)
输出
Senoculus albidus;(F. O. Pickard-Cambridge, 1897);Brazil
Senoculus barroanus;Chickering, 1941;Panama
Senoculus bucolicus;Chickering, 1941;Panama
--- 根据请求者评论更新 ---
在最终循环中添加一行:
for li in content_lis:
con = li.get_text("#",strip=True).split("\n")[0]
con = ';'.join(sx.strip() for sx in con.replace('|',"").split('#')).replace(';;',';') # add this line
print(con)
推荐阅读
- java - 使用 Docker 容器化的 Spring Boot Maven 应用程序 - 基于配置文件标志构建 WAR
- c# - 如何在 if-else 语句中创建循环?
- php - composer.json 中“冲突”的用法是什么,我该怎么办?
- javascript - 我是否正确使用它来保护 Vuejs 和 Vuex 中的路由?
- c# - 将文件上传到谷歌驱动器导致错误请求错误消息
- excel - VBA 代码帮助 - 按钮更改措辞和颜色
- xml - XPath 不显示重复值(递归查询)
- c# - Avalonia UI 的 OpenFileDialog 和 SaveFileDialog - 如何检测被点击的取消按钮
- flutter - minAxisAlignment.center 对齐文本奇怪地颤动
- python - 如何从 Django 中的 sql 中检索分隔符后的子字符串?