本文目录一览:
零基础学python(1)——爬取房天下网站信息
一、认识网页
网页分为三个部分:HTML(结构)、CSS(样式)、JavaScript(功能)。
二、爬取网站信息入门
1、Soup = BeautifulSoup (html, 'lxml'),使用beautifulsoup来解析网页。
2、使用copy CSS selector来复制网页元素的位置。
三、爬取房天下网站信息
1、导入requests和beautifulsoup
2、定义函数spider_ftx,把所需要爬取的信息都定义出来
3、调用函数spider_ftx
4、翻页爬取二手房信息
由于每页最多只能显示40条信息,观察每一页网址的变化规律,写一个循环调用的语句,把全部100页的信息全都爬取下来。
四、小结:
目前只能爬取到网站的100页信息,网站为了反爬,设置了可浏览的页面量100。要想爬取网站的所有信息,可以通过分类去获取,但是如何用python实现呢,请看下集。
python怎么爬取网站数据
很简单,三步,用爬虫框架scrapy
1. 定义item类
2. 开发spider类
3. 开发pipeline
如果有不会的,可以看一看《疯狂python讲义》
如何用 Python 爬取需要登录的网站
最近我必须执行一项从一个需要登录的网站上爬取一些网页的操作。它没有我想象中那么简单,因此我决定为它写一个辅助教程。
在本教程中,我们将从我们的bitbucket账户中爬取一个项目列表。
教程中的代码可以从我的 Github 中找到。
我们将会按照以下步骤进行:
提取登录需要的详细信息
执行站点登录
爬取所需要的数据
在本教程中,我使用了以下包(可以在 requirements.txt 中找到):
Python
requests
lxml
1
2
requests
lxml
步骤一:研究该网站
打开登录页面
进入以下页面 “bitbucket.org/account/signin”。你会看到如下图所示的页面(执行注销,以防你已经登录)
仔细研究那些我们需要提取的详细信息,以供登录之用
在这一部分,我们会创建一个字典来保存执行登录的详细信息:
1. 右击 “Username or email” 字段,选择“查看元素”。我们将使用 “name” 属性为 “username” 的输入框的值。“username”将会是 key 值,我们的用户名/电子邮箱就是对应的 value 值(在其他的网站上这些 key 值可能是 “email”,“ user_name”,“ login”,等等)。
2. 右击 “Password” 字段,选择“查看元素”。在脚本中我们需要使用 “name” 属性为 “password” 的输入框的值。“password” 将是字典的 key 值,我们输入的密码将是对应的 value 值(在其他网站key值可能是 “userpassword”,“loginpassword”,“pwd”,等等)。
3. 在源代码页面中,查找一个名为 “csrfmiddlewaretoken” 的隐藏输入标签。“csrfmiddlewaretoken” 将是 key 值,而对应的 value 值将是这个隐藏的输入值(在其他网站上这个 value 值可能是一个名为 “csrftoken”,“ authenticationtoken” 的隐藏输入值)。列如:“Vy00PE3Ra6aISwKBrPn72SFml00IcUV8”。
最后我们将会得到一个类似这样的字典:
Python
payload = {
"username": "USER NAME",
"password": "PASSWORD",
"csrfmiddlewaretoken": "CSRF_TOKEN"
}
1
2
3
4
5
payload = {
"username": "USER NAME",
"password": "PASSWORD",
"csrfmiddlewaretoken": "CSRF_TOKEN"
}
请记住,这是这个网站的一个具体案例。虽然这个登录表单很简单,但其他网站可能需要我们检查浏览器的请求日志,并找到登录步骤中应该使用的相关的 key 值和 value 值。
如何用Python爬虫抓取网页内容?
爬虫流程
其实把网络爬虫抽象开来看,它无外乎包含如下几个步骤
模拟请求网页。模拟浏览器,打开目标网站。
获取数据。打开网站之后,就可以自动化的获取我们所需要的网站数据。
保存数据。拿到数据之后,需要持久化到本地文件或者数据库等存储设备中。
那么我们该如何使用 Python 来编写自己的爬虫程序呢,在这里我要重点介绍一个 Python 库:Requests。
Requests 使用
Requests 库是 Python 中发起 HTTP 请求的库,使用非常方便简单。
模拟发送 HTTP 请求
发送 GET 请求
当我们用浏览器打开豆瓣首页时,其实发送的最原始的请求就是 GET 请求
import requests
res = requests.get('')
print(res)
print(type(res))
Response [200]
class 'requests.models.Response'