快速爬取一個網(wǎng)頁
import urllib.request
url = 'http://www.baidu.com/'
response = urllib.request.urlopen(url=url)
html = response.read()
print(html)
with open("baidu.html", 'w') as f:
f.write(html.decode())
看我們的地址爬下來后就是在本地
瀏覽器的模擬
應用場景:有些網(wǎng)頁為了防止別人惡意采集其信息所以進行了一些反爬蟲的設置,而我們又想進行爬取鹃骂。
解決方法:設置一些Headers信息(User-Agent)侥衬,模擬成瀏覽器去訪問這些網(wǎng)站沃疮。
import urllib.request
url = "http://www.baidu.com"
headers = {
'User-Agent': 'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0'
}
request = urllib.request.Request(url=url, headers=headers)
response = urllib.request.urlopen(request)
print(response.read().decode())
Cookie的使用:
應用場景:爬取的網(wǎng)頁涉及登錄信息捎拯。訪問每一個互聯(lián)網(wǎng)頁面凶朗,都是通過HTTP協(xié)議進行的远荠,而HTTP協(xié)議是一個無狀態(tài)協(xié)議砸抛,所謂的無狀態(tài)協(xié)議即無法維持會話之間的狀態(tài)亚铁。
from http import cookiejar
import urllib.request
import urllib.parse
cookiejar = cookiejar.CookieJar()
cookiejar_handler = urllib.request.HTTPCookieProcessor(cookiejar)
opener = urllib.request.build_opener(cookiejar_handler)
url = "http://www.renren.com/PLogin.do"
data = {
"email": "496155678@..com",
"password": "123456789"
}
params = urllib.parse.urlencode(data).encode()
request = urllib.request.Request(url=url, data=params)
response = opener.open(request)
# content = response.read().decode()
opener.open(request)
request1 = urllib.request.Request(url="http://zhibo.renren.com/anchor/965358670")
response = opener.open(request1)
with open("cookiejarrenren.html", "w") as f:
f.write(response.read().decode())