0
点赞
收藏
分享

微信扫一扫

本地HTML文件的爬虫整理工作

一、目标和背景:

1688上面目标竞争对手或客户信息的爬虫下载,试了很久还没有搞定,所以考虑曲线救国,将需要的网页下载保存为html文件,再用Requests解析。

但是Requests-HTML一开始就是针对Requests从网络请求页面计的,并不能解析本地html文件。想用Requests-HTML解析本地html文件,可以借助Requests-File库实现,再提取出供应商,价格,产品型号的信息。

二、实现解析本地html文件

2.1 安装Requests-File

import requests
from requests_file import FileAdapter

2.2 实现代码

import requests
from requests_file import FileAdapter
import re
import pandas as pd

result_company = []
result_http = []
result_price = []
result_title = []

for i in range(1,36): #下载了36页html文件
    url = "file:///C:/Users/peter/Downloads/{}.html".format(i)#逐一打开文件
    s = requests.Session()
    s.mount('file://', FileAdapter()) #调用函数
    resp = s.get(url).text
    company ='<div class="company-name" .*?>(.*?)</div>' #建立正则
    http_add = '<a href="(.*?)" .*?'
    resp_price = '<div class="showPricec">.*?>(.*?)</div><div class="pricestyle"></div></div>'
    resp_products = '<div class="mojar-element-title">.*?>(.*?)</div>'
    result = re.findall(company, resp,re.S)
    price = re.findall(resp_price,resp,re.S)
    products = re.findall(resp_products,resp,re.S)

    for i in result:
        result_company.append(re.sub('<.*?>','',i))
        result_http.append(re.findall(http_add,i)[0])
    for i in price:
        result_price.append(re.sub('¥</div><div class="price">','',i))
    for i in products:
        result_title.append(re.sub('<.*?>','',i))

df = pd.concat([pd.DataFrame(result_company,columns=['公司']),pd.DataFrame(result_title,columns=['产品']),pd.DataFrame(result_price,columns=['价格']),pd.DataFrame(result_http,columns=['网址'])],axis=1)
df.to_excel(excel_writer = r"D:\1688.xlsx")

参考requests-file定义:https://github.com/dashea/requests-file

举报

相关推荐

0 条评论