Python爬虫入门2(实战)

13、B站直播间弹幕爬取
代码:
import time
import pymysql
import requests

class GetS():
    url="https://api.live.bilibili.com/xlive/web-room/v1/dM/gethistory";
    pam={
    # 'roomid': "21620082"
    'roomid': "7734200"
    };
    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.53"
    }
    con = pymysql.connect(host='localhost', password='XXXX', port=3306, db='cadastre', user='root', charset='utf8')
    cur = con.cursor()
    cur.execute('drop table if exists 数据')
    sql = "CREATE TABLE if not EXISTS 数据(id bigint(11) not null,yhname VARCHAR(30) not null,text VARCHAR(255) not null,time datetime not null)"
    cur.execute(sql)
    def getstr(self):
        resp = requests.get(self.url, headers=self.head, params=self.pam)
        resp.encoding = 'utf-8'
        info = resp.json()
        ret_list = []
        danmu = {}
        for dm in info['data']['room']:
            # 保存文本
            danmu['text'] = dm['text']
            # 保存uid
            danmu['uid'] = dm['uid']
            # 保存用户名
            danmu['nickname'] = dm['nickname']
            # 保存时间
            danmu['timeline'] = dm['timeline']
            ret_list.append(danmu.copy())
            danmu.clear()
        return ret_list
    def getsql(self,list=[]):
        sql1="INSERT into 数据 VALUES(%s,%s,%s,%s)"
        for lt in list:
            if not lt is None:
                # print(lt.get('uid'),lt.get('nickname'),lt.get('text'),lt.get('timeline'))
                self.cur.execute(sql1,(int(lt.get('uid')),lt.get('nickname'),lt.get('text'),lt.get('timeline')))
        print("okkkk")

if __name__ == '__main__':
    bget=GetS()
    i=0
    list1=[]
    list2=[]
    while 1:
        i+=1
        time.sleep(3)
        retlist = bget.getstr()
        list2=retlist.copy()
        index=0
        for t in retlist:
            for m in list1:
                if t.get('uid')==m.get('uid') and t.get('text')==m.get('text'):
                    list2[index]=None
            index+=1
        print(i,"新的弹幕:")
        for it in list2:
            if not it is None:
               print("             发言时间:",it.get('timeline')," 用户昵称:",it.get('nickname'),"  说: 《",it.get('text'),"》")
        bget.getsql(list2)
        list1=retlist.copy()
运行结果:
C:\Users\lenovo\PycharmProjects\pythonProject2\venv\Scripts\python.exe C:/Users/lenovo/PycharmProjects/pythonProject2/venv/MyB站.py
1 新的弹幕:
             发言时间: 2022-08-05 19:27:52  用户昵称: 清空qtd   说: 《 痛苦面具 》
             发言时间: 2022-08-05 19:27:53  用户昵称: 软泥怪upupupの   说: 《 辅助gap 》
             发言时间: 2022-08-05 19:27:53  用户昵称: sterile11   说: 《 BLG全2;0赢还能进 把lng拖下水 》
             发言时间: 2022-08-05 19:27:54  用户昵称: 抱抱我er呀   说: 《 赞 》
             发言时间: 2022-08-05 19:27:55  用户昵称: 颜君雨   说: 《 赞 》
             发言时间: 2022-08-05 19:27:55  用户昵称: 93745497478_bili   说: 《 赞 》
             发言时间: 2022-08-05 19:27:56  用户昵称: 舒灪   说: 《 保护空姐 》
             发言时间: 2022-08-05 19:27:56  用户昵称: bili_94048687304   说: 《 赞 》
             发言时间: 2022-08-05 19:27:56  用户昵称: 凤凰台上蓝桥驿   说: 《 保护空姐 》
             发言时间: 2022-08-05 19:27:56  用户昵称: 吴齿夏建   说: 《 保护黑死 》
2 新的弹幕:
             发言时间: 2022-08-05 19:27:59  用户昵称: 57647499865_bili   说: 《 片哥有来了 》
3 新的弹幕:
             发言时间: 2022-08-05 19:28:01  用户昵称: Agust12zzZ   说: 《 赞 》
             发言时间: 2022-08-05 19:28:03  用户昵称: 弹给牛听   说: 《 赞 》
             发言时间: 2022-08-05 19:28:04  用户昵称: GrenadeZZZ   说: 《 已经死了 》
4 新的弹幕:
             发言时间: 2022-08-05 19:28:05  用户昵称: Gun3rose   说: 《 赞 》
             发言时间: 2022-08-05 19:28:05  用户昵称: 瑶瑶爱吃真知棒   说: 《 快活啊 》
             发言时间: 2022-08-05 19:28:05  用户昵称: 温若如水   说: 《 几年没玩了 》
             发言时间: 2022-08-05 19:28:07  用户昵称: JXM冖   说: 《 送bin什么时候去鼠 》
             发言时间: 2022-08-05 19:28:07  用户昵称: bili_72050643641   说: 《 赞 》
             发言时间: 2022-08-05 19:28:07  用户昵称: 喵喵大强   说: 《 打call 》
14、xpath解析爬虫
入门:

xpath是xml文件中搜索文档的一种语言。

HTML是xml的一个子集。

xml格式如:

image-20220812215214354

lxml安装:

1、pip install lxml

2、pip install lxml -i XXXXXX

(失败后可升级pip 后再尝试:升级pip: python -m pip install -U pip)

基本格式:
from lxml import etree;

xml="""....""";

tree=etree.XML(xml);

r=tree.xpath("XXXXXXX");#例如/book/name/text()
#常见有1、/book/auther/nick/text() 一级深度
#2、/book/auther//nick/text() 所有深度
#3、/book/auther/*/nick/text() 通配符*个数深度
15、xpath入门讲解
材料:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<ul>
    <li><a href="https1">百度</a></li>
    <li><a href="https2">搜狐</a></li>
    <li><a href="https3">谷歌</a></li>
</ul>
<ol>
    <li><a href="fj">飞机</a></li>
    <li><a href="dp">大炮</a></li>
    <li><a href="hc">火车</a></li>
</ol>
<div class="job">李嘉诚</div>
<div class="common">胡辣汤</div>
</body>
</html>
py代码:
from lxml import etree;
# 注意解决编码问题
parser = etree.HTMLParser(encoding="utf-8")#自己创建html解析器,增加parser参数
tree=etree.parse('Xpath.html',parser=parser);
result=tree.xpath("/html/body/ul/li/a/text()")#获取全部
result1=tree.xpath("/html/body/ul/li[1]/a/text()")#获取li[1]单个元素
result2=tree.xpath("/html/body/ol/li/a[@href='dp']/text()")#[@href='dp']添加限制条件
result3=tree.xpath("/html/body//li/a/text()")#//所有深度
print(result);
print(result1);
print(result2);
print(result3)
# print(etree.tostring(tree, encoding="utf-8").decode("utf-8"))
relist=tree.xpath("/html/body/ol/li");
for li in relist:
    text=li.xpath("./a/text()")
    print("循环:",text)
    text1=li.xpath("./a/@href")#通过@获取属性值
    print("href:",text1);

print(tree.xpath("/html/body//li/a/@href"));
print(tree.xpath("/html/body/div[1]/text()"));
运行结果:
C:\Users\lenovo\PycharmProjects\pythonProject2\venv\Scripts\python.exe C:/Users/lenovo/PycharmProjects/pythonProject2/venv/Xpath2.py
['百度', '搜狐', '谷歌']
['百度']
['大炮']
['百度', '搜狐', '谷歌', '飞机', '大炮', '火车']
循环: ['飞机']
href: ['fj']
循环: ['大炮']
href: ['dp']
循环: ['火车']
href: ['hc']
['https1', 'https2', 'https3', 'fj', 'dp', 'hc']
['李嘉诚']

进程已结束,退出代码0

技巧:

image-20220815163049995

16、xpath实战(猪八戒网数据爬取)
代码:
import csv

import requests
from lxml import etree
# 爬取HTML
url="https://zhaotong.zbj.com/search/service/?kw=saas";
resp=requests.get(url);
# print(resp.text)
# xpath获取数据
tree=etree.HTML(resp.text)
divs=tree.xpath('//*[@id="__layout"]/div/div[3]/div/div[3]/div[4]/div[1]/div')
# 创建CSV文件
f=open("八戒网saas.csv",mode="w",encoding="utf-8",newline="");
csvw=csv.writer(f);
# 循环获取数据并存入字典
for div in divs:
   name=div.xpath("./div[3]/a/text()")
   price=div.xpath("./div[3]/div[1]/span/text()")
   address=div.xpath("./a/div[2]/div[1]/div/text()")
   sum=div.xpath("./div[3]/div[2]/div[2]/span[2]/text()")
   dic={}
   dic['标题']=name[0]
   dic['价格']=price[0]
   dic['公司']=address[0]
   dic['销量']=sum[0]
   csvw.writerow([dic])
   # print(dic)
   # print(name[0])
   # print(price[0])
   # print(address[0])
   # print(sum[0])

运行结果:
"{'标题': '微信小程序软件开发外包PYTHON分销商城物联网定制SAAS', '价格': '¥1888', '公司': '尧璧信科十年专注品质服务', '销量': '100+'}"
"{'标题': 'saas支付宝微信公众号小程序商城H5python开发定制作', '价格': '¥1800', '公司': '上海笛量科技', '销量': '100+'}"
"{'标题': '定制开发公司电脑计算机管理软件APP公众号小程序SaaS系统', '价格': '¥1200', '公司': '捷逆思科技', '销量': '0'}"
"{'标题': 'saas支付宝微信公众号小程序商城H5python开发定制作', '价格': '狂欢价:¥1288', '公司': '千界科技-国家高企双软企业', '销量': '200+'}"
"{'标题': '小程序微信H5开发区块链SAAS数字藏品教育医疗电商系统外包', '价格': '狂欢价:¥1133', '公司': '木风科技-10年老店华为合作企业', '销量': '1000+'}"
"{'标题': '微信小程序定制作开发h5支付宝SaaS公众号商城分销团购外卖', '价格': '¥2000', '公司': '麦秸映像IT开发-微信/小程序/app', '销量': '900+'}"
"{'标题': '原生app开发SaaS定制商城教育社交短视频物流物联网小程序', '价格': '¥1688', '公司': '天迅达科技', '销量': '400+'}"
"{'标题': '企业模板网站制作/公司官网SAAS建站/网站建设/网页设计', '价格': '¥898', '公司': '文纳网络科技', '销量': '44'}"
"{'标题': '企业OA|CRM|ERP|TMS仓储物流SAAS管理软件开发', '价格': '狂欢价:¥1200', '公司': '由你创-年度十佳服务之星', '销量': '74'}"
"{'标题': 'saas支付宝微信公众号小程序商城H5python开发定制作', '价格': '¥1800', '公司': '上海笛量科技', '销量': '100+'}"
"{'标题': 'saas支付宝微信公众号小程序商城H5python开发定制作', '价格': '¥1200', '公司': '简策科技', '销量': '0'}"
"{'标题': '企业办公OA系统/ERP/网站建设/SaaS/ERP企业管理', '价格': '¥1.99万', '公司': '讯资软件-50人技术团队8年经验南部大区行业之星', '销量': '0'}"
"{'标题': '软件UI界面web管理系统saas平台后台客户端终端页面设计', '价格': '¥500', '公司': '轻妙视觉', '销量': '81'}"
"{'标题': '金融保险理财基金行业数据中台Saas平台商业计划书写作撰写', '价格': '¥1000', '公司': '杉林创投', '销量': '1'}"
"{'标题': '有赞插件有赞小游戏有赞应用市场企业微信开发saas微盟插件字', '价格': '¥5万', '公司': '动视湾流创新集团', '销量': '0'}"
"{'标题': '保险房产美容健身能源erp管理saas后台系统ui界面设计', '价格': '¥498', '公司': '禾马UI', '销量': '0'}"
"{'标题': 'SAAS建站网站定制建设网页响应式模板前端PHP旅游维护英文', '价格': '¥6657', '公司': '码泰软件-国家高新企业', '销量': '0'}"
"{'标题': '企业OA|CRM|ERP|TMS仓储物流SAAS管理软件开发', '价格': '狂欢价:¥1200', '公司': '由你创-年度十佳服务之星', '销量': '74'}"
"{'标题': 'saas支付宝微信公众号小程序商城H5python开发定制作', '价格': '狂欢价:¥1288', '公司': '千界科技-国家高企双软企业', '销量': '200+'}"
"{'标题': 'erp管理软件ERP生产系统开发CRM数据SAAS软件定制', '价格': '¥1.5万', '公司': '上海闻峥-国家高新企业-八戒优质服务商5强', '销量': '0'}"
"{'标题': 'saas多商城微信小程序定制开发|多门店|连锁企业|设计规划', '价格': '¥3800', '公司': '派维特定制开发', '销量': '0'}"
"{'标题': '微信小程序软件开发外包PYTHON分销商城物联网定制SAAS', '价格': '¥1888', '公司': '尧璧信科十年专注品质服务', '销量': '100+'}"
"{'标题': 'CRM|OA|saas会员管理系统|进库存系统|定制餐饮开发', '价格': '¥700', '公司': '创威科技一把一切想法的写进现实', '销量': '0'}"
"{'标题': '微信开发公众号平台前端H5分销商城官网软件定制开发SAAS', '价格': '¥2000', '公司': '新网科技-全国十佳开发商', '销量': '0'}"
"{'标题': 'CRM|OA|saas会员管理系统|进库存系统|定制餐饮开发', '价格': '¥6600', '公司': '贝凡科技', '销量': '0'}"
"{'标题': '企业管理软件开发/saas行业应用软件系统软件工具软件开发', '价格': '¥2.7万', '公司': '金桥网络旗舰店【13年互联网品牌】', '销量': '0'}"
"{'标题': '软件开发企业管理软件SaaS工具软件考勤财务系统NFT区块链', '价格': '¥3889', '公司': '齐力信息科技十年老店-app开发微信开发网站建设软件开发', '销量': '2'}"
"{'标题': '名宿酒店APP开发定制票务预订App旅游管理系统saas软件', '价格': '¥1.28万', '公司': '上海莫畏-17年老店', '销量': '0'}"
"{'标题': '工具软件企业管理成品软件行业应用软件区域链应用SaaS切入式', '价格': '¥1.2万', '公司': '悦商东方-国家高新企业', '销量': '0'}"
"{'标题': '商城小程序开发成品源码模板点餐公众号SAAS分销积分商城定制', '价格': '¥1800', '公司': '威之德信息', '销量': '1'}"
"{'标题': '原生app开发数据库设计saas平台开发管理系统c语言开发', '价格': '¥1000', '公司': '来客网络科技', '销量': '0'}"
"{'标题': '物业贝贝app互联网物业app智慧社区SAAS平台物业服务', '价格': '¥1万', '公司': '专业软件定制开发拉利法科技', '销量': '0'}"
"{'标题': 'app小程序开发网站开发建设软件saas后端python', '价格': '¥5000', '公司': '艺点意创品牌策划有限公司', '销量': '0'}"
"{'标题': 'saas支付宝微信公众号小程序商城H5python开发定制作', '价格': '¥999', '公司': '黎光科技', '销量': '0'}"
"{'标题': '直播卖房APP定制开发社交软件同城交友聊天saas系统', '价格': '¥5000', '公司': '名锐讯动-500强合作商', '销量': '1'}"
"{'标题': '【小程序开发】微信电商商城/团购/教育/定制小程序/SaaS', '价格': '¥800', '公司': '掌沃科技有限公司', '销量': '0'}"
"{'标题': '原生app开发SaaS定制商城教育社交短视频物流物联网小程序', '价格': '¥1688', '公司': '天迅达科技', '销量': '400+'}"
"{'标题': 'saas支付宝微信公众号小程序商城H5python开发定制作', '价格': '狂欢价:¥1232', '公司': '飞鸿--科技', '销量': '200+'}"
"{'标题': '软件开发企业管理软件开发SaaS工具软件考勤财务系统定制开发', '价格': '¥4999', '公司': '皮皮虾科技★十年经验', '销量': '0'}"
"{'标题': '管理软件界面区块链ui进销存saas界面ERP设计办公ui', '价格': '¥480', '公司': '千红视觉', '销量': '1'}"
"{'标题': '数字藏品SaaS系统NFT数字藏品平台开发数字藏品铸造上链', '价格': '¥1000', '公司': '西西弗斯区块链开发', '销量': '0'}"
"{'标题': '仓储物流软件出入库数据库IT开发定制SaaS企业管理系统平台', '价格': '¥1000', '公司': '完梦科技-有梦想找完梦', '销量': '0'}"
"{'标题': '响应式企业网站建设制作|电商开发|物流saas平台|AI名片', '价格': '¥1599', '公司': '广州秒知科技--8年专注开发-高质量-好服务-低总价', '销量': '0'}"
"{'标题': '定制开发电脑计算机工具软件APP功能插件C#程序SaaS系统', '价格': '¥3500', '公司': '捷径科技-国家高新技术企业', '销量': '0'}"
"{'标题': '微信抖音支付宝Saas模板小程序成品分销商城h5源码定制开发', '价格': '¥1999', '公司': '朱尔技术开发-助力企业发展', '销量': '1'}"
"{'标题': '仓储物流软件出入库数据app开发定制SaaS企业管理系统平台', '价格': '¥8000', '公司': '聚成网络-国家高新企业', '销量': '0'}"
"{'标题': 'app小程序开发APP系统开发软件saas后端python', '价格': '¥1288', '公司': '孙悟空科技', '销量': '0'}"
"{'标题': 'saas平台丨SaaS管理系统开发丨商城小程序网站定制开发', '价格': '狂欢价:¥3600', '公司': '七页科技', '销量': '0'}"
"{'标题': '开发工具企业管理行业应用嵌入式区块链应用SaaS成品设计网站', '价格': '¥1888', '公司': '荣鹊网络科技', '销量': '0'}"
"{'标题': '微信抖音支付宝Saas模板小程序成品分销商城h5源码定制开发', '价格': '狂欢价:¥998', '公司': '数字引擎-为创业者而生', '销量': '1000+'}"

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

爱打辅助的小可爱

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

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

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

打赏作者

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

抵扣说明:

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

余额充值