‘壹’ 零基础学python(1)——爬取房天下网站信息
一、认识网页
网页分为三个部分:HTML(结构)、CSS(样式)、JavaScript(功能)。
二、爬取网站信息入门
1、Soup = BeautifulSoup (html, 'lxml'),使用beautifulsoup来解析网页。
2、使用 CSS selector来复制网页元素的位置。
三、爬取房天下网站信息
1、导入requests和beautifulsoup
2、定义函数spider_ftx,把所需要爬取的信息都定义出来
3、调用函数spider_ftx
4、翻页爬取二手房信息
由于每页最多只能显示40条信息,观察每一页网址的变化规律,写一个循环调用的语句,把全部100页的信息全都爬取下来。
四、小结:
目前只能爬取到网站的100页信息,网站为了反爬,设置了可浏览的页面量100。要想爬取网站的所有信息,可以通过分类去获取,但是如何用python实现呢,请看下集。
‘贰’ 如何用 Python 爬取需要登录的网站
登录,主要是cookie会保存session id来表示身份。
你需要处理登录返回的HTTP头,Set-Cookie头中包含了需要设置的cookie信息。
然后,你登录后,访问所有地址时需要在你的HTTP请求报文头部中加入Cookie头、设置之前服务器返回的cookie值。
以上只是最简单的登录处理,如果有验证码,那就不在这个讨论范围内了,属于图像识别的领域了。
‘叁’ 如何用Python爬取学校
下面介绍login(self,k)方法
def login1(self,k):
user= str(123456789+k)#用户名为学号,为保护隐私,采用该输入,K位偏移量,这是由于学号采用递增方式排列
passwd= str(123456789+k)#初始密码等于用户名
#设置提交给服务器的数据
postdata= urllib.urlencode({
'user':user,
'pass':passwd,
'typeid':'2'})#typeid为用户种类
request=urllib2.Request(
url=self.loginurl,
data = postdata,
headers=self.headers
)
result= self.opener.open(request)#登陆并获取返回内容
return user#返回学号
登陆成功之后,由于cookie已存在并记录在签名定义的cookie中,因此可以直接访问信息页面,调用方法getInfPage(self):
def getInfPage(self):
request=urllib2.Request(
url=self.infurl,
headers=self.headers
)
result= self.opener.open(request)
return result.read().decode('gbk')1234567
读取的数据为html的文本,因此需要使用正则表达式对需要的内容进行抓取,调用方法readInf(self):
def readInf(self):
page= self.getInfPage()#page为html内容
inf=re.findall('<td.*?>([^<tr>].*?)</td>.*?<td.*?>(.*?)</td>',page,re.S)
return inf12345
按照规则匹配后数据将会存在list中并返回,此时调用writeinf(self,Items,user)方法讲信息写入excel
‘肆’ 如何用python爬取视频网站的数据
1.模拟客户端数据采集,分析http返回结果,清洗需要的数据,入库。
2.根据已有数据进行计算,实现增长率之类的数据计算。
3.实时性很难做,你当然可以不停的采数据回来,做个伪实时系统,但需要考虑这些网站是否做了客户端访问次数的限制,你需要考虑在采集器达到访问次数上限之前所采集的数据能否满足你的要求,否则就要被封IP了。
‘伍’ 如何用Python爬取数据
方法/步骤
在做爬取数据之前,你需要下载安装两个东西,一个是urllib,另外一个是python-docx。
7
这个爬下来的是源代码,如果还需要筛选的话需要自己去添加各种正则表达式。
‘陆’ 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” 的隐藏输入值)。列如:“”。
最后我们将会得到一个类似这样的字典:
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 爬取需要登录的网站
可以尝试添加相关cookie来试着去访问。自己先本地登录一下,然后抓取页面cookie,然后构造相应的请求,让他看起来像是登录过的,如果网站验证的不是特别严的话,是可以成功的。
还有一种方法,就是用Selenium框架,他会打开一个浏览器,然后访问指定url。但是还是免不了需要登录一次,但是登录过程,输入账号密码和点击登录按钮都是你可以模拟的。具体你可以参照官方文档。
‘玖’ 如何用 Python 爬取需要登录的网站
在header里加入cookie就可以了,例如网络首页,你没有登录和登录的效果是不一样的,如果使用python模拟登录的效果,就要把cookie一起post过去。