我正在编写一个价格网络代码,以提取价格、数量等数据。我使用BeautifulSoup的代码从目标网站的html标记中提取文本。但是,它返回了一堆文本,在将它们打印到csv文件之前,我不知道如何分割或分离它们。
from urllib import urlopen as uReq
from bs4 import BeautifulSoup as soup
my_url = 'https://www.digikey.com/products/en?keywords=568-3651-5-ND'
uClient = uReq(my_url)
page_html = uClient.read()
uClient.close()
page_soup = soup(page_html, "html.parser")
containers = page_soup.body.script
filename = "products.txt"
f = open(filename, "w")
headers = "data"
f.write(headers)
data = containers.text
f.write(data + "\n")
f.close()
它回来的时候:
var utag_data = {
page_site: 'US',
page_language: 'en',
wt_use_udo: 'True',
page_content_group: 'Part Search',
page_content_sub_group: 'Part Detail',
page_title: 'Part Detail',
page_type: 'PS',
page_sub_type: 'PD',
page_id: 'PD',
**pn_sku: '1740-1017-ND',**
part_id: '1154763',
**part_available: '4324',**
transaction_type: 'v',
transaction_quantity: '1',
supplier_id: '1740'
, part_search_filter: 'No Filter'
, **part_search_term: '568-3651-5-ND'**
, part_search_term_ext: '568-3651-5-ND'
, part_search_results_count: 1
, video_source: 'Part Detail'
}
我尝试了find和regex,但结果与我所期望的数量(part_available:'4324')和sku_num (pn_sku:'1740-1017-ND')不一样。我是刚开始编写python和代码,请留下任何评论。
发布于 2017-05-14 03:21:25
与其尝试使用正则表达式,不如使用json。但是给定的脚本不是严格格式化的json。相反,您可以使用 parser。
import yaml
data = yaml.load(containers.text.replace('var utag_data =', '', 1))
with open('products.csv', 'w') as f:
f.write('part,sku\n')
f.write('{},{}\n'.format(data['part_available'], data['pn_sku']))结果csv文件内容:
part,sku
4324,1740-1017-NDhttps://stackoverflow.com/questions/43959896
复制相似问题