一个小爬虫

Posted 成长日记

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一个小爬虫相关的知识,希望对你有一定的参考价值。

需求:

获取一个展位号和公司名称,具体链接如下

http://www.cr-expo.com/cn/zhanshang.aspx?id=2020

实现

import  urllib.request
import pandas as pd
from bs4 import  BeautifulSoup


def to_excel(writer, datas, df, sheet_name):
    try:
        for data in datas:
            df.loc[datas.index(data) + 1] = data
        df.to_excel(excel_writer=writer, sheet_name=sheet_name, index=None)
    except Exception as e:
        print("写入excel失败:%s" % e)

def get_html(url):
    web = urllib.request.urlopen(url)
    soup = BeautifulSoup(web,‘html.parser‘,from_encoding=‘utf-8‘)
    data = soup.find_all("ul",class_="zs_three")
    return data

def get_booth_data(url):
    data = get_html(url)
    booth_data = data[0].find_all(‘li‘)
    datas =[]
    for line in booth_data:
        dict_data = {}
        dict_data["展位号"] = line.find("h4").get_text().split(‘:‘)[1]
        dict_data["公司名称"] = line.find("h1").get_text()
        datas.append(dict_data)
    return datas

def sava_excel(datas):
    file = "展位信息.xlsx"
    writer = pd.ExcelWriter(file)
    df = pd.DataFrame(
        columns=(‘展位号‘, ‘公司名称‘)
    )
    to_excel(writer, datas, df, sheet_name="展位信息")
    writer.save()
    writer.close()


if __name__ == ‘__main__‘:
    base_url = "http://www.cr-expo.com/cn/zhanshang.aspx?id=2020"
    datas = []
    for i in range(1,33):
        url = base_url+ "&page="+str(i)
        datas.extend(get_booth_data(url))
    sava_excel(datas)

以上是关于一个小爬虫的主要内容,如果未能解决你的问题,请参考以下文章

NIH周三讲座视频爬虫

Python练习册 第 0013 题: 用 Python 写一个爬图片的程序,爬 这个链接里的日本妹子图片 :-),(http://tieba.baidu.com/p/2166231880)(代码片段

python爬虫学习笔记-M3U8流视频数据爬虫

爬虫遇到头疼的验证码?Python实战讲解弹窗处理和验证码识别

python网络爬虫

VSCode自定义代码片段——git命令操作一个完整流程