Web scraping 基于html函数参数的Webscraping并导出为csv
您好,我正在寻找以下内容,以便我能以这种格式将其保存在.csv文件中Web scraping 基于html函数参数的Webscraping并导出为csv,web-scraping,Web Scraping,您好,我正在寻找以下内容,以便我能以这种格式将其保存在.csv文件中 公司名称|网站Url |电话|电子邮件->第一行 公司名称1 | | 81234567 |hello@gmail.com->第二排 公司名称2 | 87654321 |hello2@gmail.com->所有链接的后续行 是否有一种方法可以使用正则表达式获取各个字段并将其导出到CSV文件?我一直在尝试python和beautiful soup,但我只知道如何使用class或id导出。不确定如何为函数参数执行此操作 谢谢你的帮助
公司名称|网站Url |电话|电子邮件->第一行公司名称1 | | 81234567 |hello@gmail.com->第二排
公司名称2 | 87654321 |hello2@gmail.com->所有链接的后续行
是否有一种方法可以使用正则表达式获取各个字段并将其导出到CSV文件?我一直在尝试python和beautiful soup,但我只知道如何使用
class
或id
导出。不确定如何为函数参数执行此操作
谢谢你的帮助 要提取您正在寻找的信息,您不仅需要beautifulsoup(或lxml),还需要json和一些字符串操作 假设您的html如下所示:
<div class="readmore">
<a href="" onclick="updateDetailModal({name":"Company Name 1","website":"https:\/\/hello.com.sg\/","phone":"65 8123 4567","email":"hello@gmail.com.sg"})" class="btn btn-primary" data-toggle="modal" data-target="#exampleModal">More
</a>
</div>
您的数据现在位于公司
列表中:
from bs4 import BeautifulSoup as bs
import json
soup = bs(modal,"lxml")
infos = soup.select('a')
companies = []
for info in infos:
target = info.attrs['onclick'].split('(')[1].split(')')[0]
data = json.loads(target)
companies.extend([[v for v in data.values()]])
输出:
for co in companies:
print(co)
从这里,您可以使用标准方法将其写入csv
for co in companies:
print(co)
['Company Name 1', 'https://hello.com.sg/', '65 8123 4567', 'hello@gmail.com.sg']
['Company Name 2', 'https://hello2.com.sg/', '87654321', 'hello2@gmail.com.sg']