第一篇:爬蟲入門request模塊的基本使用以www.douban.com為例
get請求:
# 查看響應(yīng)數(shù)據(jù),返回的是Unicode格式的數(shù)據(jù)
print(response.text)
# # 查看響應(yīng)數(shù)據(jù),返回的是字節(jié)流數(shù)據(jù)(圖片視頻等)
print(response.content)
# 查看完整url地址
print(response.url)
# 查看響應(yīng)頭部字符編碼
print(response.encoding)
# 查看響應(yīng)碼
print(response.status_code)
print(response)
1.想目標地址發(fā)起請求,攜帶heards和不攜帶heards的區(qū)別
import requests
url = "http://www.douban.com"
heards = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36"
}
r = requests.get(url=url)
print(r)
print(r.headers)
<Response [418]>
{'Connection': 'close', 'Date': 'Sat, 23 Sep 2023 14:46:44 GMT', 'Server': 'dae', 'Content-Length': '0'}
request模塊用于測速發(fā)送數(shù)據(jù)的連通性,通過回復(fù)可以看出418,Connection:close表示未獲取到服務(wù)器的返回值,需要添加heards信息,此服務(wù)器拒絕非瀏覽器發(fā)送的請求。
import requests
url = "http://www.douban.com"
heards = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36"
}
r = requests.get(url=url, headers=heards)
print(r)
print(r.headers)
<Response [200]>
{'Date': 'Sat, 23 Sep 2023 14:49:28 GMT', 'Content-Type': 'text/html; charset=utf-8', 'Transfer-Encoding': 'chunked', 'Connection': 'keep-alive', 'Keep-Alive': 'timeout=30', 'X-Xss-Protection': '1; mode=block', 'X-Douban-Mobileapp': '0', 'Expires': 'Sun, 1 Jan 2006 01:00:00 GMT', 'Pragma': 'no-cache', 'Cache-Control': 'must-revalidate, no-cache, private', 'Set-Cookie': 'ck="deleted"; max-age=0; domain=.douban.com; expires=Thu, 01-Jan-1970 00:00:00 GMT; path=/, dbcl2="deleted"; max-age=0; domain=.douban.com; expires=Thu, 01-Jan-1970 00:00:00 GMT; path=/, ll="108099"; path=/; domain=.douban.com; expires=Sun, 22-Sep-2024 14:49:28 GMT, bid=ArFHHYIPdMc; Expires=Sun, 22-Sep-24 14:49:28 GMT; Domain=.douban.com; Path=/', 'X-DAE-App': 'sns', 'X-DAE-Instance': 'home', 'X-DAE-Mountpoint': 'True', 'X-DOUBAN-NEWBID': 'ArFHHYIPdMc', 'Server': 'dae', 'X-Frame-Options': 'SAMEORIGIN', 'Strict-Transport-Security': 'max-age=15552000;', 'Content-Encoding': 'gzip'}
上圖可以看出添加了頭信息headers之后成功獲取了返回值,一般情況下使用request模塊發(fā)送請求爬蟲時,默認情況下都需要添加頭信息
2.攜帶params參數(shù)以百度為例
import requests
heards = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36"
}
url = "http://www.baidu.com/s?"
kw = {
'wd': "python"
}
response = requests.get(url=url, params=kw, headers=heards)
# 修改編碼格式如果不修改獲得的響應(yīng)數(shù)據(jù)會亂碼
response.encoding = 'utf-8'
# 查看響應(yīng)數(shù)據(jù),返回的是Unicode格式的數(shù)據(jù)
print(response.text)
# # 查看響應(yīng)數(shù)據(jù),返回的是字節(jié)流數(shù)據(jù)(圖片視頻等)
print(response.content)
# 查看完整url地址
print(response.url)
# 查看響應(yīng)頭部字符編碼
print(response.encoding)
# 查看響應(yīng)碼
print(response.status_code)
print(response)
?POST請求:
對于post來說我們一般需要為他構(gòu)建一些參數(shù)傳遞也就是form表單,一般放入data中
import requests
heards = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36"
}
url = "https://wordpress-edu-3autumn.localprod.oc.forchange.cn/wp-login.php"
data = {
'log': 'hello',
'pwd': '123456',
'wp-submit': '登錄',
'redirect_to': 'https://wordpress-edu-3autumn.localprod.oc.forchange.cn',
'testcookie': '1'
}
response = requests.post(url=url, data=data, headers=heards)
response.encoding= 'utf-8'
print(response.text)
第二篇:非結(jié)構(gòu)化數(shù)據(jù)和結(jié)構(gòu)化數(shù)據(jù)的處理
非結(jié)構(gòu)化數(shù)據(jù)的處理
文本、電話號碼、郵箱地址
- 正則表達式
HTML文件:
- 正則表達式
- XPath
- css選擇器
結(jié)構(gòu)化數(shù)據(jù)的處理
- json文件
三、Xpath詳細使用:
1.什么是XPath
XPath是一門在XML文檔中查找信息的語言,可用來在XML文檔中對元素的屬性進行遍歷文章來源:http://www.zghlxwxcb.cn/news/detail-731701.html
2.XPath開發(fā)工具
- 開源的Xpath表達式編輯器工具XMLQuire(XML格式文件可用)
- Chrome插件XPath Helper
- Firefox插件XPath Checker
3.選取節(jié)點
XPath使用路徑表達式來選取XML文檔中的節(jié)點或者節(jié)點集,這些路徑表達式和我們在常規(guī)電腦文件系統(tǒng)中看到的表達式非常相似文章來源地址http://www.zghlxwxcb.cn/news/detail-731701.html
下面列取了常見的路勁表達式:
表達式? ? ? ? | 描述 |
nodename | 選取此節(jié)點的所有子節(jié)點 |
/ | 從根節(jié)點選取 |
// | 從匹配的訓(xùn)責的當前節(jié)點選擇文檔中的節(jié)點,從不考慮他們的位置 |
. | 選取當前節(jié)點 |
.. | 選取當前節(jié)點的父節(jié)點 |
@ | 選取屬性 |
在下面表格中,列出了一些路徑表達式以及表達式的結(jié)果:
路徑表達式 | |
bookstore | 選擇bookstore元素的所有子節(jié)點 |
/bookstore | 選取根元素bookstore。注釋:加入路徑起始于/,則此路徑使用代表到某元素的絕對位置 |
bookstore/book | 選取所有bookstore的子元素的所有book元素 |
//book | 選取所有book子元素,而不管他們在文檔中的位置 |
bookstore//book | 選擇數(shù)據(jù)bookstore元素的后代的所有book元素,而不管它們位置bookstore之下的射門位置 |
//@lang | 選取名為lang的所有屬性 |
?謂語(Predicates)
謂語用來查找某個特定的節(jié)點或者包含某個指定的值的節(jié)點,被嵌在方括號中
路徑表達式 | 結(jié)果 |
/bookstore/book[1] | 選取數(shù)據(jù)bookstore子元素的第一個book元素 |
/bookstore/book[last()] | 選取數(shù)據(jù)bookstore子元素的最后一個book元素 |
/bookstore/book[last()-1] | 選取數(shù)據(jù)bookstore子元素的倒數(shù)第二個book元素 |
/bookstore/book[position()<3] | 選取最前面的兩個屬于bookstore元素的子元素的book元素 |
//title[@lang] | 選取所有擁有名為lang的屬性的title元素 |
//title[@lang='eng'] | 選取所有title元素,且這些元素擁有值為eng的lang屬性 |
/bookstore/book[price>35.00] | 選取bookstore元素所有book元素,且其中的price元素的值大于35.00 |
/bookstore/book[price>35.00]/title | 選取bookstore元素所有book元素的所有title元素,且其中的price元素的值大于35.00 |
選取未知節(jié)點
通配符 | 描述 |
* | 匹配任何元素節(jié)點 |
@* | 匹配任何屬性節(jié)點 |
node() | 匹配任何類型節(jié)點 |
路徑表達式 | 結(jié)果 |
/bookstore/* | 選取bookstore元素的所有子元素 |
//* | 選取文檔中的所有元素 |
//title[@*] | 選取所有帶有屬性的title元素 |
?選取若干路徑
路徑表達式 | 結(jié)果 |
//book/title | //book/price | 選取book元素的所喲有title和price元素 |
//title | //price | 選取文檔中的所有title和price元素 |
/bookstore/book/title | //price | 選取屬于bookstore元素的book元素的所有title元素,以及文檔中所有的price元素 |
到了這里,關(guān)于爬蟲,初學(xué)者指南的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!