爬虫-获取数据bs4

  1. 安装lxml

    bash 复制代码
    pip3 install lxml
  2. 用法

python 复制代码
	import requests
	from bs4 import BeautifulSoup
	url ='xxxx'
	res = requests.get(url).text
	soup = BeautifulSoup(res,'lxml')
	
	##---------------------bs4选择器使用方法--------------------------
	#1. 根据a标签查找,类型是list,元素是bs4对象
	print(soup.find_all('a')) 
	#2. 返回所有div 和 a 标签
	print(soup.find_all(['div','a']))
    #3. 根据标签属性定位
    print(soup.find_all(attrs={"clsaa":"xxx"}))
	#4. 根据标签和属性定位
	print(soup.find_all('div',attrs={"clsaa":"xxx"}))
	
	##---------------------css选择器使用方法--------------------------
	#1. 根据标签
	print(soup.select('h1'))
	#2. 根据css属性 查找class=xx的数据
	print(soup.select('.xxx'))
	#3.根据id属性  查找id=xx的数据
	print(soup.select('#xx))
	#4. 层级选择器 id=xx 下的 class=yy的数据
	print(soup.select('#xx .yy'))
	#5 属性选择器
	print(soup.select(div[id="xx"]))
	
	##---------------------获取文本信息和属性方法----------------------
	#5. 获取标签的文本信息 text
	print(soup.find_all('div',attrs={"clsaa":"xxx"})[0].text)
    #5-2. 获取标签的文本信息 string
    print(soup.find_all('div',attrs={"clsaa":"xxx"})[0].string)
    #5-3. 获取标签的文本信息 text()
	print(soup.find_all('div',attrs={"clsaa":"xxx"})[0].get_text())
	#5-4. 获取标签的文本信息 getText()
	print(soup.find_all('div',attrs={"clsaa":"xxx"})[0].getText())
	#获取标签属性 get()
	print(soup.find_all('div')[0].get('class'))
	
  1. 实例

    python 复制代码
    #用xpath做一个简单的爬虫,爬取链家网里的租房信息获取标题,
    位置,房屋的格局(三室一厅),关注人数,单价,总价
    import requests
    from bs4 import BeautifulSoup
    
    def get_req(url):
    
        headers = {
            "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36"
        }
        res = requests.get(url,headers=headers)
        return res.text
    
    def get_all(data):
        house_data=[]
        soup = BeautifulSoup(data,'lxml')
    
        for item in soup.find_all(attrs={"class":"info clear"}):
            house_msg = {}
    
            title = item.find('div',attrs={"class":"title"}).find('a').text
            position_info = '-'.join([value.text for value in item.find_all('div',attrs={"class":"positionInfo"})[0].find_all('a')])
            house_icon =  item.find('div',attrs={"class":"houseInfo"}).text.split('|')[0]
            total_price = item.find_all('div',attrs={"class":"totalPrice totalPrice2"})[0].find('span').text
            star_icon = item.find('div',attrs={"class":"followInfo"}).text
            unit_price = item.find('div',attrs={"class":"unitPrice"}).find('span').text
            house_msg['标题'] = title
            house_msg['位置'] = position_info
            house_msg['房屋的格局'] = house_icon
            house_msg['关注人数'] = star_icon
            house_msg['总价'] = total_price
            house_msg['单价'] = unit_price
            house_data.append(house_msg)
            print(house_msg)
        return house_data
    
    if __name__ == '__main__':
        url = 'https://sh.lianjia.com/ershoufang/pudong/pg2/'
        all_data = get_req(url)
        get_all(all_data)
相关推荐
AIAdvocate1 小时前
Pandas_数据结构详解
数据结构·python·pandas
小言从不摸鱼1 小时前
【AI大模型】ChatGPT模型原理介绍(下)
人工智能·python·深度学习·机器学习·自然语言处理·chatgpt
FreakStudio3 小时前
全网最适合入门的面向对象编程教程:50 Python函数方法与接口-接口和抽象基类
python·嵌入式·面向对象·电子diy
redcocal4 小时前
地平线秋招
python·嵌入式硬件·算法·fpga开发·求职招聘
artificiali4 小时前
Anaconda配置pytorch的基本操作
人工智能·pytorch·python
RaidenQ5 小时前
2024.9.13 Python与图像处理新国大EE5731课程大作业,索贝尔算子计算边缘,高斯核模糊边缘,Haar小波计算边缘
图像处理·python·算法·课程设计
花生了什么树~.5 小时前
python基础知识(六)--字典遍历、公共运算符、公共方法、函数、变量分类、参数分类、拆包、引用
开发语言·python
Trouvaille ~5 小时前
【Python篇】深度探索NumPy(下篇):从科学计算到机器学习的高效实战技巧
图像处理·python·机器学习·numpy·信号处理·时间序列分析·科学计算
爆更小小刘5 小时前
Python基础语法(3)下
开发语言·python
哪 吒5 小时前
华为OD机试 - 第 K 个字母在原来字符串的索引(Python/JS/C/C++ 2024 E卷 100分)
javascript·python·华为od