爬虫简单爬取网站信息

首先打开想要爬取的网站,找到想要爬取的内容

开始编写代码:

引入需要的模块

import os #引入系统模块
from bs4 import BeautifulSoup  # 网页解析,获取数据
import re  # 正则表达式,进行文字交配
import urllib.request, urllib.error  # 制定URL,获取网页数据
import xlwt  # 进行excel操作
import urllib.parse

爬取网页的大致框架

def main():
    url = ''

    datalist = getData(url)
    savepath = r'./' #.表示保存在当前文件夹下
    #2.解析数据

    #3.保存数据
    saveData(datalist,savepath)

def getData(url):
    pass

def ask_URL(url):
    pass


def saveData(datalist,savepath):
    pass

if __name__ == '__main__':
    main()

获取url        

baseurl = ' '

输入你想要爬取的网址

因为当你这个网页是分页的,当你换页网站也会变,所以就定义一个基础的url后面用for循环来补全

def getData(baseurl):
    datalist = []

    for i in range(1,5):    #选择爬取的页数,我这里是5页
        url = baseurl + str(i)+'.html'
        html = ask_URL(url)  # 保存获取到的网页源码
        print(html)

    return datalist

 对爬虫进行伪装

def ask_URL(url):
    head = {
        "User-Agent": "Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) "
                      "AppleWebKit/537.36 (KHTML, like Gecko) "
                      "Chrome/101.0.4951.64 Mobile Safari/537.36 Edg/101.0.1210.47 "
    }
    request = urllib.request.Request(url,headers=head)
    html = ''
    try:
        response = urllib.request.urlopen(request)
        html = response.read().decode("gbk")
        # print(html)
    except urllib.error.URLError as e:  # e表示一个urllib.URLError类型的变量
        # hasattr()函数用于判断对象是否包含对应的属性
        # 语法:
        #
        # hasattr(object, name)
        # object - - 对象。
        # name - - 字符串,属性名。
        # 返回值
        # 如果对象有该属性返回
        # True,否则返回
        # False。
        if hasattr(e,"code"):
            print(e.code)
        if hasattr(e,'reason'):
            print(e.reason)

    return html

UA模拟浏览器访问网页数据

数据解析

点击F12进入开发者工具,选择你想要爬取的具体内容

用正则表达式进行提取操作

findContent = re.compile(r'target="_blank">(.*?)</a>')

然后用Beautifulsoup进行解析

def getData(baseurl):
    datalist = []

    for i in range(1,5):
        url = baseurl + str(i)+'.html'
        html = ask_URL(url)  # 保存获取到的网页源码
        # print(html)

        #逐一解析
        soup = BeautifulSoup(html,'html.parser')    #解析html,用html解析器
        for item in soup.find_all('div', class_="ej_bor"):     #查找符合要求的字符串,形成列表
            data = []#保存信息
            item = str(item)
            content = re.findall(findContent,item)
            data.append(content)
            datalist.append(data)
    return datalist

 存到列表中后进行保存操作

保存到Excel中

def saveData(datalist,savepath):
    #申请50块空列表
    a = 50
    data = [None] * a

    workbook = xlwt.Workbook(encoding="gbk",style_compression=0)  # 创建workbook对象
    worksheet = workbook.add_sheet('信息',cell_overwrite_ok=True)   # 创建工作表
    col = ('信息')
    for i in range(0,1):
        worksheet.write(0,i,col)
    for i in range(0,4):
        m=i+1
        for j in range(0,50):
            print('第%d条'%(j+1))
            # print(len(datalist[0][0]))
            data[j] = datalist[i][0][j]
            print(data[j])
            for j in range(0,50):
                n = 0
                if n%5 == 0:
                    m+=1
                    n = 0
                worksheet.write(m,n,data[j])
                n+=1

    workbook.save('信息.xls')    #保存数据
    print('爬取完毕!')

 后面操作有些繁琐是为了对Excel表格进行格式操作,若读者感觉麻烦可以不进行此操作,直接保存即可

大致框架为:

def saveData(datalist,savepath):

    workbook = xlwt.Workbook(encoding="gbk",style_compression=0)  # 创建workbook对象
    worksheet = workbook.add_sheet('信息',cell_overwrite_ok=True)   # 创建工作表
    col = ('信息')
    for i in range(0,1):
        worksheet.write(0,i,col[i])
    for i in range(0,50):
        print('第%d条'%(i+1))
        data = datalist[i]
        for j in range(0,1):
            worksheet.write(i+1,j,data[j])
    workbook.save('信息.xls')    #保存数据
    print('爬取完毕!')

OK,那么到这里就爬取完成了,有兴趣的读者可自行深入研究。 

  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

m0_嘉木

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值