Web scraping 基于html函数参数的Webscraping并导出为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导出。不确定如何为函数参数执行此操作 谢谢你的帮助

您好,我正在寻找以下内容,以便我能以这种格式将其保存在.csv文件中

公司名称|网站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&quot;:&quot;Company Name 1&quot;,&quot;website&quot;:&quot;https:\/\/hello.com.sg\/&quot;,&quot;phone&quot;:&quot;65 8123 4567&quot;,&quot;email&quot;:&quot;hello@gmail.com.sg&quot;})" 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']