IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> 爬虫入门02 -- 异步方法请求信息 -> 正文阅读

[网络协议]爬虫入门02 -- 异步方法请求信息


一、介绍

主要是通过python的fake_useragent, asyncio, aiohttp,requests,lxml,pandas进行信息的抓取。
对于信息要通过获取Xpath得到对应的信息位置。使用异步方法。

二、代码(部分)

1. 异步方法进行请求

 async def request(self, url):
        async with aiohttp.ClientSession() as session: #创建异步网络请求对象
            try:
                async with session.get(url, headers = self.headers,timeout=3) as response:
                    if response.status == 200 :  # 200说明请求成功
                        result = await response.text() # 获取请求结果中的文本代码
                        return result
            except Exception as e:
                print(e.args) #打印异常信息

2. 发送请求获得页数

  def get_page_all(self,city):
        city_letter = self.get_city_letter(city)
        url = 
        response = requests.get(url,headers=self.headers) #发送网络请求
        if response.status_code == 200:
            html = etree.HTML(response.text)

            page_all = html.xpath('//*[@id="content"]/div[1]/div[2]/@data-totalpage')[0]
            print("租房信息获取成功!")
            # 需要抓取每一页,所以结果+1
            return int(page_all) + 1
        else:
            print('获取所有页码请求未成功!')

3. 异步方法,根据总页数循环解析页面抓取信息,包括标题、区域、面积、楼层、价格

    async def parse_data_all(self, page_all, city):
        for i in range(1,page_all): #根据租房信息总页码,分别对每一页发送网络请求
            city_letter = self.get_city_letter(city)
            if i == 1:
                url = 'https://{}.lianjia.com/zufang/ab200301001000rt200600000001'.format(city_letter, i)
            else:
                url = 'https://{}.lianjia.com/zufang/ab200301001000pg{}rt200600000001'.format(city_letter,i)
            html_text = await self.request(url) #发送请求,获取html代码
            html = etree.HTML(html_text)
            print('获取'+str(i)+'页信息!')

            #获取所有标题
            title_all = html.xpath('//*[@id="content"]/div[1]/div[1]/div/div/p[1]/a/text()')

            #获取大区域位置
            big_region_all = html.xpath('//*[@id="content"]/div[1]/div[1]/div/div/p[2]/a[1]/text()')

            #获取小区位置
            small_region_all = html.xpath('//*[@id="content"]/div[1]/div[1]/div/div/p[2]/a[2]/text()')

            #获取房子面积
            square_all = html.xpath('//*[@id="content"]/div[1]/div[1]/div/div/p[2]/text()[5]')

            #获取房子价格
            price_all = html.xpath('//*[@id="content"]/div[1]/div[1]/div/div/span/em/text()')

            #获取房子格局
            room_all = html.xpath('//*[@id="content"]/div[1]/div[1]/div/div/p[2]/text()[1]')

            # 去除信息中的空格以及换行符
            title_list = self.remove_spaces(title_all)
            big_region_list = self.remove_spaces(big_region_all)
            small_region_list = self.remove_spaces(small_region_all)
         #   region_list = self.combined_regin(big_region_all,small_region_all)
            square_list = self.remove_spaces(square_all)
            price_list = self.remove_spaces(price_all)

            data_page = {'标题':title_list,
                         '区名':big_region_list,
                         '小区/位置':small_region_list,
                         'square':square_list,
                         'price':price_list}
            print('写入第'+str(i)+'页数据!')
            df = pandas.DataFrame(data_page)
            df.to_csv('{}租房信息.csv'.format(city),mode = 'a',encoding='utf_8_sig',index=None)
  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2022-01-30 19:15:44  更:2022-01-30 19:17:24 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 10:05:20-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码