導航:首頁 > 編程語言 > python爬蟲教程知乎

python爬蟲教程知乎

發布時間:2023-05-30 01:42:26

1. 怎樣用python設計一個爬蟲模擬登陸知乎

兩種方法:
1.帶cookielib和urllib2
import urllib2
import urllib
import cookielib
def login():
email = raw_input("請輸入用戶名:")
pwd = raw_input("請輸入密碼:") data={"email":email,"password":pwd}
post_data=urllib.urlencode(data) cj=cookielib.CookieJar()
opener=urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))headers
={"User-agent":"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1"}website =
raw_input('請輸入網址:')req=urllib2.Request(website,post_data,headers)content=opener.open(req)print
content.read()
2.使用selenium
import selenium import webdriver
browser=webdriver.Firefox()
browser.get("Url")
browser.find_element_by_id(" ").sendkey("username")
browser.find_element_by_id(" ").sendkey("pass")
browser.find_element_by_id(" ").click()
其實我這個最簡單了,用的python3,requests, 只需要驗證一次,就會保存cookies,下次登錄使用cookies登錄。
第一步、打開首頁獲取_xref值,驗證圖片 第二步、輸入賬號密碼 第三步、看是否需要驗證、要則下載驗證碼圖片,手動輸入
第四步、判斷是否登錄成功、登錄成功後獲取頁面值。

2. Python中怎麼用爬蟲爬

Python爬蟲可以爬取的東西有很多,Python爬蟲怎麼學?簡單的分析下:
如果你仔細觀察,就不難發現,懂爬蟲、學習爬蟲的人越來越多,一方面,互聯網可以獲取的數據越來越多,另一方面,像 Python這樣的編程語言提供越來越多的優秀工具,讓爬蟲變得簡單、容易上手。
利用爬蟲我們可以獲取大量的價值數據,從而獲得感性認識中不能得到的信息,比如:
知乎:爬取優質答案,為你篩選出各話題下最優質的內容。
淘寶、京東:抓取商品、評論及銷量數據,對各種商品及用戶的消費場景進行分析。
安居客、鏈家:抓取房產買賣及租售信息,分析房價變化趨勢、做不同區域的房價分析。
拉勾網、智聯:爬取各類職位信息,分析各行業人才需求情況及薪資水平。
雪球網:抓取雪球高回報用戶的行為,對股票市場進行分析和預測。
爬蟲是入門Python最好的方式,沒有之一。Python有很多應用的方向,比如後台開發、web開發、科學計算等等,但爬蟲對於初學者而言更友好,原理簡單,幾行代碼就能實現基本的爬蟲,學習的過程更加平滑,你能體會更大的成就感。
掌握基本的爬蟲後,你再去學習Python數據分析、web開發甚至機器學習,都會更得心應手。因為這個過程中,Python基本語法、庫的使用,以及如何查找文檔你都非常熟悉了。
對於小白來說,爬蟲可能是一件非常復雜、技術門檻很高的事情。比如有人認為學爬蟲必須精通 Python,然後哼哧哼哧系統學習 Python 的每個知識點,很久之後發現仍然爬不了數據;有的人則認為先要掌握網頁的知識,遂開始 HTMLCSS,結果入了前端的坑,瘁……
但掌握正確的方法,在短時間內做到能夠爬取主流網站的數據,其實非常容易實現,但建議你從一開始就要有一個具體的目標。
在目標的驅動下,你的學習才會更加精準和高效。那些所有你認為必須的前置知識,都是可以在完成目標的過程中學到的。這里給你一條平滑的、零基礎快速入門的學習路徑。
1.學習 Python 包並實現基本的爬蟲過程
2.了解非結構化數據的存儲
3.學習scrapy,搭建工程化爬蟲
4.學習資料庫知識,應對大規模數據存儲與提取
5.掌握各種技巧,應對特殊網站的反爬措施
6.分布式爬蟲,實現大規模並發採集,提升效率

3. 如何用爬蟲爬取知乎專欄信息

python是一款應用非常廣泛的腳本程序語言,谷歌公司的網頁就是用拆埋python編寫。python在生物信息、統計、網頁製作、計算等多個領域都體現出了強大的功能。python和其他腳本語言如java、R、Perl 一樣,都可以直接在命令行里運行腳本程序。工具/原料
python;CMD命令行;windows操作系統
方法/步驟
1、首先下載安裝python,建議安裝2.7版本以上,3.0版本以下,由於3.0版本以上不向下兼容,體驗較差。

2、打開文本編輯器,推薦editplus,notepad等,將文件保存成 .py格式,editplus和notepad支持識別python語法。
腳本第一行一定要寫上 #!usr/bin/python
表示該腳本文件是可執行python腳本
如果python目錄不在usr/bin目錄下,則替換成當前python執行程序的目錄。
3、編寫完腳本之後注意調試、可以直接用editplus調試。調試方法可自行網路。腳本寫完之後,打開CMD命令行,前提是python 已經被攜擾加入到環境變數中,如果沒有加入到環境變數,請百旅隱螞度

4、在CMD命令行中,輸入 逗python地 + 逗空格地,即 地python 逗;將已經寫好的腳本文件拖拽到當前游標位置,然後敲回車運行即可。

4. 怎樣用Python設計一個爬蟲模擬登陸知乎

先來說一下,爬蟲模擬登陸的基本原理吧,我也是剛開始接觸對於一些深層次的東西也不是掌握的很清楚。首先比較重要的一個概念就是cookie,我們都知道HTTP是一種無狀態的協議,也就是說當一個瀏覽器客戶端向伺服器提交一個request,伺服器回應一個response後,他們之間的聯系就中斷了。這樣就導致了這個客戶端在向伺服器發送請求時,伺服器無法判別這兩個客戶端是不是一個了。握搭這樣肯定是不行的。這時cookie的作用就體現出來了。當客戶端向伺服器發送一個請求後,伺服器會給它分配一個標識(cookie),並保存到客戶端本地,當下次該客戶端再次發送請求時連帶著cookie一並發送給伺服器,伺服器一看到cookie,啊原來是你呀,這是你的東西,拿走吧。所以一個爬蟲模擬登陸就是要要做到模擬一個瀏覽器客戶端的行為,首先將你的基本登錄信息發送給指定的url,伺服器驗證成功後會返回一個cookie,我們就利用這個cookie進行後續的爬取工作就行了。
我這里抓包用的就是chrome的開發者工具,不過你也可以使用Fiddler、Firebug等都可以,只不過作為一名前端er對chrome有一種特殊的喜愛之情。准備好工具接下來就要打開知乎的登陸頁面並查看https://www.hu.com/#signin 我們可以很容易發現這個請求 發送的就是登錄信息,當然我使用手機登陸的 用郵件登陸的是最後結尾是email

所以我們只需要向這個地址post數據陸或就行了

phone_num 登錄名
password 密碼
captcha_type 驗證碼類型(這個參數著這里並沒有實質作用)
rember_me 記住密碼
_xsrf 一個隱藏的表單元素 知乎用來防禦CSRF的(段悉拿關於CSRF請打開這里) 我發現這個值是固定所以就在這里直接寫死了 若果有興趣的同學可以寫一個正則表達式 把這部分的值提取出來 這樣更嚴謹一些。

# -*- coding:utf-8 -*-
import urllib2
import urllib
import cookielib
posturl = 'https://www.hu.com/login/phone_num'
headers={
'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) '
'AppleWebKit/537.36 (KHTML, like Gecko) '
'Chrome/52.0.2743.116 Safari/537.36',
'Referer':'https://www.hu.com/'
}
value = {
'password':'*****************',
'remember_me':True,
'phone_num':'*******************',
'_xsrf':'**********************'
}
data=urllib.urlencode(value)
#初始化一個CookieJar來處理Cookie
cookieJar=cookielib.CookieJar()
cookie_support = urllib2.HTTPCookieProcessor(cookieJar)
#實例化一個全局opener
opener=urllib2.build_opener(cookie_support)
request = urllib2.Request(posturl, data, headers)
result=opener.open(request)
print result.read()

當你看到伺服器返回這個信息的時候就說明你登陸成功了
{"r":0,
"msg": "\u767b\u5f55\u6210\u529f"
}
#翻譯過來就是 「登陸成功」 四個大字
然後你就可以用這個身份去抓取知乎上的頁面了
page=opener.open("https://www.hu.com/people/yu-yi-56-70")
content = page.read().decode('utf-8')
print(content)

這段代碼 就是通過實例化一個opener對象保存成功登陸後的cookie信息,然後再通過這個opener帶著這個cookie去訪問伺服器上關於這個身份的完整頁面。

5. 如何學習Python爬蟲

個人覺得:
新手學習python爬取網頁先用下面4個庫就夠了:(第4個是實在搞不定用的,當然某些特殊情況它鄭返也可能搞不頃叢絕定)

1. 打開網頁,下載文件:urllib
2. 解析網頁:BeautifulSoup,熟悉JQuery的可以用Pyquery
3. 使用Requests來提交各種類型的請求,支持重定向,cookies等。
4. 使用Selenium,模擬瀏覽器提交類似用戶的操作,處理js動態產生的網頁

這幾個庫有它們各自的功能。配合起來就可以完成爬取各種網頁並分析的功能。具體的用法可以查他們的官網手冊(上面有鏈接)。

做事情是要有驅動的,如果你沒什麼特別想抓取的,新手學雀姿習可以從這個闖關網站開始
,目前更新到第五關,闖過前四關,你應該就掌握了這些庫的基本操作。

實在闖不過去,再到這里看題解吧,第四關會用到並行編程。(串列編程完成第四關會很費時間哦),第四,五關只出了題,還沒發布題解。。。

學完這些基礎,再去學習scrapy這個強大的爬蟲框架會更順些。這里有它的中文介紹。

這是我在知乎的回答,直接轉過來有些鏈接沒有生效,可以到這里看原版,http://www.hu.com/question/20899988/answer/59131676

6. Python爬取知乎與我所理解的爬蟲與反爬蟲

關於知乎驗證碼登陸的問題,用到了Python上一個重要的圖片處理庫PIL,如果不行,就把圖片存到本地,手動輸入。

通過對知乎登陸是的抓包,可以發現登陸知乎,需要post三個參數,一個是賬號,一個是密碼,一個是xrsf。
這個xrsf隱藏在表單裡面,每次登陸的時候,應該是伺服器隨機產生一個字元串。所有,要模擬登陸的時候,必須要拿到xrsf。

用chrome (或者火狐 httpfox 抓包分析)的結果:

所以,必須要拿到xsrf的數值,注意這是一個動態變化的參數,每次都不一樣。

拿到xsrf,下面就可以模擬登陸了。
使用requests庫的session對象,建立一個會話的好處是,可以把同一個用戶的不同請求聯系起來,直到會話結束都會自動處理cookies。

注意:cookies 是當前目錄的一個文件,這個文件保存了知乎的cookie,如果是第一個登陸,那麼當然是沒有這個文件的,不能通過cookie文件來登陸。必須要輸入密碼。

這是登陸的函數,通過login函數來登陸,post 自己的賬號,密碼和xrsf 到知乎登陸認證的頁面上去,然後得到cookie,將cookie保存到當前目錄下的文件裡面。下次登陸的時候,直接讀取這個cookie文件。

這是cookie文件的內容

以下是源碼

運行結果:

https://github.com/zhaozhengcoder/Spider/tree/master/spider_hu

反爬蟲最基本的策略:

爬蟲策略:
這兩個都是在http協議的報文段的檢查,同樣爬蟲端可以很方便的設置這些欄位的值,來欺騙伺服器。

反爬蟲進階策略:
1.像知乎一樣,在登錄的表單裡面放入一個隱藏欄位,裡面會有一個隨機數,每次都不一樣,這樣除非你的爬蟲腳本能夠解析這個隨機數,否則下次爬的時候就不行了。
2.記錄訪問的ip,統計訪問次數,如果次數太高,可以認為這個ip有問題。

爬蟲進階策略:
1.像這篇文章提到的,爬蟲也可以先解析一下隱藏欄位的值,然後再進行模擬登錄。
2.爬蟲可以使用ip代理池的方式,來避免被發現。同時,也可以爬一會休息一會的方式來降低頻率。另外,伺服器根據ip訪問次數來進行反爬,再ipv6沒有全面普及的時代,這個策略會很容易造成誤傷。(這個是我個人的理解)。

通過Cookie限制進行反爬蟲:
和Headers校驗的反爬蟲機制類似,當用戶向目標網站發送請求時,會再請求數據中攜帶Cookie,網站通過校驗請求信息是否存在Cookie,以及校驗Cookie的值來判定發起訪問請求的到底是真實的用戶還是爬蟲,第一次打開網頁會生成一個隨機cookie,如果再次打開網頁這個Cookie不存在,那麼再次設置,第三次打開仍然不存在,這就非常有可能是爬蟲在工作了。

反爬蟲進進階策略:
1.數據投毒,伺服器在自己的頁面上放置很多隱藏的url,這些url存在於html文件文件裡面,但是通過css或者js使他們不會被顯示在用戶看到的頁面上面。(確保用戶點擊不到)。那麼,爬蟲在爬取網頁的時候,很用可能取訪問這個url,伺服器可以100%的認為這是爬蟲乾的,然後可以返回給他一些錯誤的數據,或者是拒絕響應。

爬蟲進進階策略:
1.各個網站雖然需要反爬蟲,但是不能夠把網路,谷歌這樣的搜索引擎的爬蟲給幹了(幹了的話,你的網站在網路都說搜不到!)。這樣爬蟲應該就可以冒充是網路的爬蟲去爬。(但是ip也許可能被識破,因為你的ip並不是網路的ip)

反爬蟲進進進階策略:
給個驗證碼,讓你輸入以後才能登錄,登錄之後,才能訪問。

爬蟲進進進階策略:
圖像識別,機器學習,識別驗證碼。不過這個應該比較難,或者說成本比較高。

參考資料:
廖雪峰的python教程
靜覓的python教程
requests庫官方文檔
segmentfault上面有一個人的關於知乎爬蟲的博客,找不到鏈接了

7. 怎樣用Python設計一個爬蟲模擬登陸知乎

給你一個例子,可以看看:

import requests
import time
import json
import os
import re
import sys
import subprocess
from bs4 import BeautifulSoup as BS

class ZhiHuClient(object):

"""連接知乎的工具類,維護一個Session
2015.11.11

用法:

client = ZhiHuClient()

# 第一次使用時需要調用此方法登錄一次,生成cookie文件
# 以後可以跳過這一步
client.login("username", "password")

# 用這個session進行其他網路操作,詳見requests庫
session = client.getSession()
"""

# 網址參數是賬號類型
TYPE_PHONE_NUM = "phone_num"
TYPE_EMAIL = "email"
loginURL = r"http://www.hu.com/login/{0}"
homeURL = r"http://www.hu.com"
captchaURL = r"http://www.hu.com/captcha.gif"

headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.86 Safari/537.36",
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8",
"Accept-Encoding": "gzip, deflate",
"Host": "www.hu.com",
"Upgrade-Insecure-Requests": "1",
}

captchaFile = os.path.join(sys.path[0], "captcha.gif")
cookieFile = os.path.join(sys.path[0], "cookie")

def __init__(self):
os.chdir(sys.path[0]) # 設置腳本所在目錄為當前工作目錄

self.__session = requests.Session()
self.__session.headers = self.headers # 用self調用類變數是防止將來類改名
# 若已經有 cookie 則直接登錄
self.__cookie = self.__loadCookie()
if self.__cookie:
print("檢測到cookie文件,直接使用cookie登錄")
self.__session.cookies.update(self.__cookie)
soup = BS(self.open(r"http://www.hu.com/").text, "html.parser")
print("已登陸賬號: %s" % soup.find("span", class_="name").getText())
else:
print("沒有找到cookie文件,請調用login方法登錄一次!")

# 登錄
def login(self, username, password):
"""
驗證碼錯誤返回:
{'errcode': 1991829, 'r': 1, 'data': {'captcha': '請提交正確的驗證碼 :('}, 'msg': '請提交正確的驗證碼 :('}
登錄成功返回:
{'r': 0, 'msg': '登陸成功'}
"""
self.__username = username
self.__password = password
self.__loginURL = self.loginURL.format(self.__getUsernameType())
# 隨便開個網頁,獲取登陸所需的_xsrf
html = self.open(self.homeURL).text
soup = BS(html, "html.parser")
_xsrf = soup.find("input", {"name": "_xsrf"})["value"]
# 下載驗證碼圖片
while True:
captcha = self.open(self.captchaURL).content
with open(self.captchaFile, "wb") as output:
output.write(captcha)
# 人眼識別
print("=" * 50)
print("已打開驗證碼圖片,請識別!")
subprocess.call(self.captchaFile, shell=True)
captcha = input("請輸入驗證碼:")
os.remove(self.captchaFile)
# 發送POST請求
data = {
"_xsrf": _xsrf,
"password": self.__password,
"remember_me": "true",
self.__getUsernameType(): self.__username,
"captcha": captcha
}
res = self.__session.post(self.__loginURL, data=data)
print("=" * 50)
# print(res.text) # 輸出腳本信息,調試用
if res.json()["r"] == 0:
print("登錄成功")
self.__saveCookie()
break
else:
print("登錄失敗")
print("錯誤信息 --->", res.json()["msg"])

def __getUsernameType(self):
"""判斷用戶名類型
經測試,網頁的判斷規則是純數字為phone_num,其他為email
"""
if self.__username.isdigit():
return self.TYPE_PHONE_NUM
return self.TYPE_EMAIL

def __saveCookie(self):
"""cookies 序列化到文件
即把dict對象轉化成字元串保存
"""
with open(self.cookieFile, "w") as output:
cookies = self.__session.cookies.get_dict()
json.mp(cookies, output)
print("=" * 50)
print("已在同目錄下生成cookie文件:", self.cookieFile)

def __loadCookie(self):
"""讀取cookie文件,返回反序列化後的dict對象,沒有則返回None"""
if os.path.exists(self.cookieFile):
print("=" * 50)
with open(self.cookieFile, "r") as f:
cookie = json.load(f)
return cookie
return None

def open(self, url, delay=0, timeout=10):
"""打開網頁,返回Response對象"""
if delay:
time.sleep(delay)
return self.__session.get(url, timeout=timeout)

def getSession(self):
return self.__session

if __name__ == '__main__':
client = ZhiHuClient()

# 第一次使用時需要調用此方法登錄一次,生成cookie文件
# 以後可以跳過這一步
# client.login("username", "password")

# 用這個session進行其他網路操作,詳見requests庫
session = client.getSession()

8. 知乎python 爬蟲如何入門學習

鏈接:https://pan..com/s/1wMgTx-M-Ea9y1IYn-UTZaA

提取碼:2b6c

課程簡介

畢業不知如何就業?工作效率低經常挨罵?很多次想學編程都沒有學會?

Python 實戰:四周實現爬蟲系統,無需編程基礎,二十八天掌握一項謀生技能。

帶你學到如何從網上批量獲得幾十萬數據,如何處理海量大數據,數據可視化及網站製作。

課程目錄

開始之前,魔力手冊 for 實戰學員預習

第一周:學會爬取網頁信息

第二周:學會爬取大規模數據

第三周:數據統計與分析

第四周:搭建 Django 數據可視化網站

......

9. 如何用python寫爬蟲 知乎

學習

基本的爬蟲工作原理
基本的http抓取工具,scrapy
Bloom Filter: Bloom Filters by Example
如果需要大規模網頁抓取,你需要學習分布式爬蟲的概念。其實沒那麼玄乎,你只要學會怎樣維護一個所有集群機器能夠有效分享的分布式隊列就好。最簡單的實現是python-rq: https://github.com/nvie/rq
rq和Scrapy的結合:darkrho/scrapy-redis · GitHub
後續處理,網頁析取(grangier/python-goose · GitHub),存儲(Mongodb)

10. 如何學習python知乎

對於Python的學習人員需要掌握以下技術。
1.網路編程。
網路編程在生活和開發中無處不在,哪裡有通訊就有網路,它可以稱為是一切開發的"基石"。對於所有編程開發人員必須要知其然並知其所以然,所以網路部分將從協議、封包、解包等底層進行深入剖析。
2. 爬蟲開發。
將網路一切數據作為資源,通過自動化程序進行有針對性的數據採集以及處理。爬蟲開發項目包含跨越防爬蟲策略、高性能非同步IO、分布式爬蟲等,並針對Scrapy框架源碼進行深入剖析,從而理解其原理並實現自定義爬蟲框架。
3.Web開發。
Web開發包含前端以及後端兩大部分,前端部分,帶你從"黑白"到"彩色"世界,手把手開發動態網頁;後端部分,帶你從10行代碼開始到n萬行來實現並使用自己的微型Web框架,框架講解中涵蓋了數據、組件、安全等多領域的知識,從底層了解其工作原理並可駕馭任何業內主流的Web框架。
4. IT自動化開發。
IT運維自動化是一組將靜態的設備結構轉化為根據IT服務需求動態彈性響應的策略,目的就是實現減少人工干預、降低人員成本以及出錯概率,真刀真槍的帶你開發企業中最常用的項目,從設計層面、框架選擇、靈活性、擴展性、故障處理、以及如何優化等多個層面接觸真實的且來源於各大互聯網公司真實案例,如:堡壘機、CMDB、全網監控、主機管理等。
5. 金融分析。
金融分析包含金融知識和Python相關模塊的學習,手把手帶你從金融小白到開發量化交易策略的大拿。學習內容囊括Numpy\Pandas\Scipy數據分析模塊等,以及常見金融分析策略如"雙均線"、"周規則交易"、"羊駝策略"、"Dual Thrust 交易策略"等,讓夢想照進現實,進入金融行業不再是個夢。
6. 人工智慧+機器學習。
人工智慧時代來臨,率先引入深度機器學習課程。其中包含機器學習的基礎概念以及常用知識,如:分類、聚類、回歸、神經網路以及常用類庫,並根據身邊事件作為案例,一步一步經過預處理、建模、訓練以及評估和參調等。人工智慧是未來科技發展的新趨勢,Python作為最主要的編程語言,勢必有很好的發展前景,現在學習Python也是一個很好的機會。

閱讀全文

與python爬蟲教程知乎相關的資料

熱點內容
2019中日韓免費好看的電影 瀏覽:660
雲伺服器怎麼綁定亞馬遜 瀏覽:852
怎樣破解網盤加密資源 瀏覽:86
青瓷pdf 瀏覽:425
壓縮空氣一立方米耗電多少 瀏覽:458
釘盤文件夾名 瀏覽:290
22dyorg /info /393348.html 瀏覽:962
顧念的小說免費閱讀 瀏覽:784
岳雲鵬過安檢掉東西的電影叫什麼 瀏覽:786
泰國大尺度同性戀 瀏覽:169
馬小樂第二部全集目錄 瀏覽:167
電影女主角叫安吉電影的名字 瀏覽:713
怎麼樣加密網站 瀏覽:306
psql命令q 瀏覽:722
日本觀影網址 瀏覽:471
百萬英鎊電影下載英文 瀏覽:617
迷案記《招魂的童謠》 瀏覽:400
java線程怎麼用 瀏覽:968
看大尺度電影在哪看 瀏覽:545
泰國人妖電影。 瀏覽:697