前言
先看爬到的信息:
上篇文章已经讲了Python安装第三方库,今天主要用到了两个库:Requests和BeautifulSoup。所以我先简单的说一下这两个库的用法,提到的都是此文需要用到的。
Requests
requests是一个很实用的Python HTTP客户端库。
下面通过一个例子来了解一下:
网址就用房天下的天津整租租房信息“http://zu.tj.fang.com/house/n31/”
import requests
#请求头
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.140 Safari/537.36',
}
#Get请求-并传递headers
data=requests.get("http://zu.tj.fang.com/house/n31/",headers=headers)
print(data.text)
如果正常的话打印出来的就是如下,这里只截取一部分:
requests请求也会出现异常,这里我就先不细说了,可以去此网址查下具体用法:
http://docs.python-requests.org/zh_CN/latest/user/quickstart.html
另外上面的代码中的headers是如何来的呢?这里给大家讲一下:
请求头的添加方法:
1.打开你要爬取的网址,在空白处右键-->检查,然后点击Network
BeautifulSoup
Beautiful Soup 是用Python写的一个HTML/XML的解析器,它可以很好的处理不规范标记并生成剖析树(parse tree)。 它提供简单又常用的导航(navigating),搜索以及修改剖析树的操作。它可以大大节省你的编程时间。
安装Beautiful Soup时注意一个问题, 我的python是3.6版本,安装的是bs4
import requests
import bs4
#请求头
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.140 Safari/537.36',
}
#Get请求-并传递headers
data=requests.get("http://zu.tj.fang.com/house/n31/",headers=headers)
soup=bs4.BeautifulSoup(data.text,"html.parser")
print(soup.prettify())
输出的是soup文档,结果如下(截取了一部分):
这里主要讲一下Beautiful Soup中的select()方法, 通过某个属性查找,而属性可以在网页中复制到。
具体的可以直接此网址学:
http://beautifulsoup.readthedocs.io/zh_CN/latest/
复制的步骤:
1.选中你要了解的内容,右键-->检查,比如我对价格进行了“检查”:
2.选择copy selector
3.复制的放到select方法内,代码如下:
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.140 Safari/537.36',
}
data=requests.get("http://zu.tj.fang.com/house/n31/",headers=headers)
soup=bs4.BeautifulSoup(data.text,"html.parser")
concretedata=soup.select("#listBox > div.houseList > dl:nth-of-type(1) > dd > div.moreInfo > p > span")
for houseinformat in concretedata:
print(houseinformat.get_text())
输出的肯定是我们选中的价格
注意的是复制的内容里有dl:nth-child(1),直接改成dl:nth-of-type(1)要不会报错的。另外里面的get_text()方法表示直接获取了文字信息,不然会和标签一起显示的。
强调:如果要想获取此列表的所有价格的话,直接观察一下会发现,去掉nth-of-type(1)就可以了,大家应该都明白的。也就是把select方法中的内容改为:
然后运行输出(只截取了一部分):
实战
根据上面的爬取方式,我们可以把当前网页“房天下天津整租租房信息”中的房屋标题,具体内容与价格爬取下来。
1.爬取标题
爬取标题我们再copy时发现用select方法不是和恰当了,这里应该能看出来吧?看不出来的可以自己去试一试,这里我们查看爬取下来SOUP文档,发现标题是在P标签下的"title"字段
所以我们可以直接用Beautiful Soup中的find_all()方法
#标题
title=soup.find_all("p","title")
2.爬取价格
这就不用多少了,上面讲过
#价格
price=soup.select("#listBox > div.houseList > dl > dd > div.moreInfo > p > span")
3.爬取具体内容
#具体的内容
concretedata=soup.select("#listBox > div.houseList > dl > dd > div.moreInfo > p > span")
整体代码如下:
# -*- coding: gbk -*-
import requests
import bs4
def get_lastdata():
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.140 Safari/537.36',
}
data = requests.get("http://zu.tj.fang.com/house/n31/", headers=headers)
#因为打印出来的格式有乱码,所以更改一下编码
data.encoding="gbk"
soup = bs4.BeautifulSoup(data.text, "html.parser")
# 标题
title = soup.find_all("p", "title")
# 价格
price = soup.select("#listBox > div.houseList > dl > dd > div.moreInfo > p > span")
# 具体的内容
concretedata = soup.select("#listBox > div.houseList > dl > dd > p.font16.mt20.bold")
for title,price,concretedata in zip(title,price,concretedata):
last_data={
"title":title.get_text().strip(),
"concretedata":concretedata.get_text().strip(),
"price":price.get_text().strip()
}
print( last_data)
if __name__ == '__main__':
get_lastdata()
运行结果:
希望对刚入门的朋友有所帮助!
我的微信:lengquele5311
相关推荐
Python应用实战代码-爬取综艺《哈哈哈哈哈》弹幕做情感分析
Python爬虫应用实战案例-爬取招聘信息
Python爬虫源码大放送:抓取数据,轻松搞定! 想轻松抓取网站数据,却苦于技术门槛太高?别担心,这些源码将助你轻松搞定数据抓取,让你成为网络世界的“数据侠盗”。 它们还具有超强的实用价值。无论你是想要分析...
python爬虫-----爬取腾讯网上的图片jpg、png并下载到本地
python 爬虫开发--爬取某站小视频随机生成浏览器的头部信息demo源码
Python爬虫入门案例-爬取电影数据.zip
python 爬虫开发--爬取某站小视频之获取动态请求数据demo源码
python 爬虫开发--爬取ZX课程写入Mysql demo源码+注解清晰一看就懂
python爬虫基础项目--爬取百度贴吧前十页.pdf
利用python 爬虫 爬取火车票的数据。值得学习一下!!!
Python应用实战代码-Python爬取新房数据
python爬虫-爬取豆瓣音乐
Python爬虫实例-爬取豆瓣Top250-保存为表格
python爬虫--爬取网站中的多个网页
Python实战应用代码-爬取电视剧赘婿评论-词云分析
python网络爬虫代码-爬取链家网的广州花都区的房价数据
内容全面介绍了Python爬虫的实战技巧。 适合人群: 对Python爬虫技术感兴趣,想了解爬虫实际应用的开发者。文中代码示例详尽,有助于爬虫编程的理解和练习。 能学到什么: 通过学习可以掌握爬虫的实战方法,如模拟登录...
Scrapy入门项目1--爬取知乎用户信息 1.选定起始人:选定一个关注数量或粉丝数量多的大佬 2.获取粉丝和关注列表 3.获取列表用户信息 4.获取每位用户粉丝和关注
通过python爬虫采集城市的酒店数据 内容概要:使用python采集酒店数据 适用人群:做酒店数据市场调研,数据分析报告的人群 使用场景及目标:需要依靠python3环境,执行爬虫脚本 其他说明:需要使用开发者工具捕捉...
python爬虫 Python爬虫 - 爬取 Instagram 一个博主所有图片视频.zip