npm install or pip install 插件
import json
import time
from openpyxl import load_workbook
from pip._vendor import requests
from bs4 import BeautifulSoup
import pandas as pd
import re
import xlsxwriter
設置request header
header = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) ' 'Chrome/112.0.0.0 Safari/537.36'
定義
exl_name = "abc.xlsx"
sheetname ="sheet_doc"
pandas讀取Excel的URL
pdExl = pd.read_excel("abc.xlsx", engine="openpyxl",index_col=0,usecols='A:Q')
結果寫入Excel
workbook = xlsxwriter.Workbook('abc.xlsx')
worksheet = workbook.add_worksheet('contract')
requests抓取,BeautifulSoup分析
通過Regex提取核心內容
for index, _row in pdExl.iterrows():
if _row['url'] is None:
continue
url = 'https://www.abc.com'+_row['url']
response = requests.get(url, headers=header)
soup = BeautifulSoup(response.content, 'html.parser')
soup.find(class_="other-info")
info_element = soup.find(attrs={'class':'other-info'})
if info_element is None or info_element.getText() is None:
continue
email = re.search("\w+@\w+.\w+",info_element.getText())
if email:
worksheet.write(index, 17, email.group(0))
else:
print('No')
workbook.close()
把Json數據保存到Excel
在現有Excel的基礎上追加內容
response = requests.get(url, headers=header)
jsonData = json.loads(response.text)
df = pd.DataFrame.from_dict(jsonData["data"])
exl_name = "abc.xlsx"
sheetname ="sheet_doc"
if not os.path.exists(exl_name):
df.to_excel(exl_name, sheet_name=sheetname, index=False)
else:
df1 = pd.read_excel(exl_name)
df_concat = pd.concat([df1, df], axis=0)
df_concat.to_excel(exl_name)