python爬虫实战

python 复制代码
from requests import get
import pymysql
class baidu:
    cookies = {
        'BAIDUID_BFESS': 'E695E9B2AF2F6BFFED9BD684584A8956:FG=1',
        'BIDUPSID': 'E695E9B2AF2F6BFFED9BD684584A8956',
        'PSTM': '1712380467',
        'ZFY': 'chbmO0bdpF7bbm3HXNhicZ5O5VMDmhHCB:Avy72gQwyE:C',
        'BAIDU_WISE_UID': 'wapp_1712447420718_476',
        'RT': '"z=1&dm=baidu.com&si=50f27fa9-37fb-4712-bdc9-55bca99e3155&ss=luor0zji&sl=d&tt=8hp&bcn=https%3A%2F%2Ffclog.baidu.com%2Flog%2Fweirwood%3Ftype%3Dperf&ld=4dhs&ul=4q99&hd=4qa1"',
        'BDORZ': 'B490B5EBF6F3CD402E515D22BCDA1598',
        'H_PS_PSSID': '40373_40366_40416_40298_40466_40505_40397_40445_60023_60037_60047_40510',
        'PHPSESSID': 'ph9pu9rp8dgtq0o2c68fs0ek44',
        'ab_sr': '1.0.1_MjRkMTcxMDY3ODZlMTZiOGM0YjVkMDc5YjA0NTY2YjUwYzE5YTczNjc5M2JjZTE5MzdmZDQzY2M5ZGE0MDBiZGFiN2U1YzFlNTIwNGRmYmJkNTliODAzZmZkNWFmNzYxOWY5NDZlNmQxODRkYjE3NWNkOWUxN2U5ZTVjYzk5NTA3NjE5Y2ZiNmE2Mzc2NmNhNjRmOGQzNjYzYThjMWQ5MA==',
    }
    headers = {
        'Accept': '*/*',
        'Accept-Language': 'zh-CN,zh;q=0.9',
        'Connection': 'keep-alive',
        # 'Cookie': 'BAIDUID_BFESS=E695E9B2AF2F6BFFED9BD684584A8956:FG=1; BIDUPSID=E695E9B2AF2F6BFFED9BD684584A8956; PSTM=1712380467; ZFY=chbmO0bdpF7bbm3HXNhicZ5O5VMDmhHCB:Avy72gQwyE:C; BAIDU_WISE_UID=wapp_1712447420718_476; RT="z=1&dm=baidu.com&si=50f27fa9-37fb-4712-bdc9-55bca99e3155&ss=luor0zji&sl=d&tt=8hp&bcn=https%3A%2F%2Ffclog.baidu.com%2Flog%2Fweirwood%3Ftype%3Dperf&ld=4dhs&ul=4q99&hd=4qa1"; BDORZ=B490B5EBF6F3CD402E515D22BCDA1598; H_PS_PSSID=40373_40366_40416_40298_40466_40505_40397_40445_60023_60037_60047_40510; PHPSESSID=ph9pu9rp8dgtq0o2c68fs0ek44; ab_sr=1.0.1_MjRkMTcxMDY3ODZlMTZiOGM0YjVkMDc5YjA0NTY2YjUwYzE5YTczNjc5M2JjZTE5MzdmZDQzY2M5ZGE0MDBiZGFiN2U1YzFlNTIwNGRmYmJkNTliODAzZmZkNWFmNzYxOWY5NDZlNmQxODRkYjE3NWNkOWUxN2U5ZTVjYzk5NTA3NjE5Y2ZiNmE2Mzc2NmNhNjRmOGQzNjYzYThjMWQ5MA==',
        'Referer': 'https://qianxi.baidu.com/',
        'Sec-Fetch-Dest': 'script',
        'Sec-Fetch-Mode': 'no-cors',
        'Sec-Fetch-Site': 'same-site',
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36',
        'sec-ch-ua': '"Google Chrome";v="123", "Not:A-Brand";v="8", "Chromium";v="123"',
        'sec-ch-ua-mobile': '?0',
        'sec-ch-ua-platform': '"Windows"',
    }

    def __init__(self):
        li=[
            'https://huiyan.baidu.com/migration/historycurve.jsonp?dt=country&id=0&type=move_in&callback=jsonp_1712742016499_9375183',
            'https://huiyan.baidu.com/migration/cityrank.jsonp?dt=country&id=0&type=move_in&date=20240409&callback=jsonp_1712740241816_6607068',
            'https://huiyan.baidu.com/migration/cityrank.jsonp?dt=country&id=0&type=move_out&date=20240409&callback=jsonp_1712740241816_6607068'
            ]
        ls=[]
        for i in li:
            ls.append(self.发送请求(i))
        self.解析数据(ls)
    def 发送请求(self,url):
        response = get(url, cookies=self.cookies, headers=self.headers).text
        return response
    def 解析数据(self,ls):
        s0=ls[0].split('list');s0.pop(0);s0=eval(':'.join(''.join(s0).split(':')[1:]).rstrip(')')[0:-2])
        s1=self.解析s2(ls[1])
        s2=self.解析s2(ls[2])
        self.存储数据(s0,s1,s2)
    def 解析s2(self,ls):
        return eval(':'.join(ls.split('list')[1].split(':')[1:]).rstrip(')').rstrip('}'))
    def 存储数据(self,*ls):
        db=pymysql.connect(host='localhost',user='root',password='root',port=3306)
        cursor=db.cursor()
        sql='create database 百度地图;'
        cursor.execute(sql)
        cursor.execute('use 百度地图;')
        sql = '''
            CREATE TABLE IF NOT EXISTS your_table_name (
                date DATE PRIMARY KEY,
                value FLOAT
            ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
            '''  
        cursor.execute(sql)
        for date, value in ls[0].items():
            insert_sql = f"INSERT INTO your_table_name (date, value) VALUES ('{date}', {value}) ON DUPLICATE KEY UPDATE value={value};"
            cursor.execute(insert_sql)
        db.commit()
        
       # 创建数据表
        create_table_sql = '''
        CREATE TABLE IF NOT EXISTS city_data (
            id INT AUTO_INCREMENT PRIMARY KEY,
            city_name VARCHAR(255) NOT NULL,
            province_name VARCHAR(255) NOT NULL,
            value FLOAT NOT NULL
        ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
        '''
        cursor.execute(create_table_sql)
        data=ls[1]+ls[2]
        for item in data:
            insert_sql = f"INSERT INTO city_data (city_name, province_name, value) VALUES ('{item['city_name']}', '{item['province_name']}', {item['value']})"
            cursor.execute(insert_sql)
        
        # 提交事务
        db.commit()
        db.close()
                
        
        
x=baidu()
相关推荐
嫂子的姐夫4 小时前
055-wasm:爬虫练习网spa15(token 纯算还原)
爬虫·wasm
深蓝电商API20 小时前
用AI生成拟人行为:让鼠标轨迹更“有人味”
人工智能·爬虫
深蓝电商API1 天前
XPath、CSS选择器、正则:什么场景用什么
爬虫·xpath·css选择器
陶醉的松鼠1 天前
SCRAPY爬虫框架使用详述
爬虫
深蓝电商API3 天前
从爬虫到Agent:数据采集的下一个形态是什么
爬虫
xiangjiaodalishi3 天前
主流 AI 爬虫 User-Agent 清单大全:分组、配置与持续维护(2026 版)
人工智能·爬虫·python
深蓝电商API4 天前
用向量数据库存储爬取内容:语义检索的高级玩法
爬虫·向量数据库
深蓝电商API4 天前
Playwright+多模态大模型:让AI自己“看”页面并决策
人工智能·爬虫·playwright
远航计算机4 天前
收录从分钟级变 3 到 7 天,抢首发为什么失效了
大数据·人工智能·爬虫·chatgpt·aigc·1024程序员节
嫂子的姐夫5 天前
052-滑块验证码:丰巢登录
爬虫·js逆向·滑块验证码·aes加密