爬虫-获取数据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)
相关推荐
懒大王爱吃狼22 分钟前
Python教程:python枚举类定义和使用
开发语言·前端·javascript·python·python基础·python编程·python书籍
秃头佛爷1 小时前
Python学习大纲总结及注意事项
开发语言·python·学习
深度学习lover2 小时前
<项目代码>YOLOv8 苹果腐烂识别<目标检测>
人工智能·python·yolo·目标检测·计算机视觉·苹果腐烂识别
API快乐传递者3 小时前
淘宝反爬虫机制的主要手段有哪些?
爬虫·python
阡之尘埃5 小时前
Python数据分析案例61——信贷风控评分卡模型(A卡)(scorecardpy 全面解析)
人工智能·python·机器学习·数据分析·智能风控·信贷风控
丕羽8 小时前
【Pytorch】基本语法
人工智能·pytorch·python
bryant_meng9 小时前
【python】Distribution
开发语言·python·分布函数·常用分布
m0_5945263010 小时前
Python批量合并多个PDF
java·python·pdf
工业互联网专业10 小时前
Python毕业设计选题:基于Hadoop的租房数据分析系统的设计与实现
vue.js·hadoop·python·flask·毕业设计·源码·课程设计
钱钱钱端10 小时前
【压力测试】如何确定系统最大并发用户数?
自动化测试·软件测试·python·职场和发展·压力测试·postman