目錄css
爬蟲就是模擬客戶端(瀏覽器)發送網絡請求
,獲取響應,按照規則提取數據的程序html
模擬客戶端(瀏覽器)發送網絡請求
: 照着瀏覽器發送如出一轍的請求,獲取和瀏覽器如出一轍的數據python
elements的內容和爬蟲獲取到的url地址的響應不一樣,爬蟲中須要以當前url地址對應的響應爲準提取數據chrome
headers = { "User-Agent":"Mozilla/5.0 (iPhone; CPU iPhone OS 10_3 like Mac OS X) AppleWebKit/602.1.50 (KHTML, like Gecko) CriOS/56.0.2924.75 Mobile/14E5239e Safari/602.1", "Referer": "http://fanyi.baidu.com/?aldtype=16047"} response = requests.get(url,headers=headers)
from retrying import retry @retry(stop_max_attempt_number=3) def fun1(): print("this is func1") raise ValueError("this is test error")
headers= {"User-Agent":"....","Cookie":"cookie 字符串"}
使用json以前須要導入json
json.loads(json字符串)
豆瓣電視爬蟲案例瀏覽器
elements
中定位數據/html/head/meta
:可以選中html下的head下的全部的meta標籤//
:可以從任意節點開始選擇//li
:當前頁面上的全部的li標籤/html/head//link
:head下的全部的link標籤@符號的用途
//div[@class='feed']/ul/li
a/@href
:選擇a的href的值/a/text()
:獲取a下的文本/a//text()
:獲取a下的全部的文本./a
當前節點下的a標籤from lxml import etree element = etree.HTML("html字符串") element.xpath("")
"傳智{}播客".format(1) "傳智{}播客".format([1,2,3]) "傳智{}播客".format({1,2,3}) "傳智{}播客{}".format({1,2,3},[1,23,2]) "傳智{}播客{}".format({1,2,3},1)
[i+10 for i in range(10)]
--->[10,11,12,...19]["10月{}日".format(i) for i in range(1,10)]
-->["10月1日","10月2日",..."10月9日"]{i+10:i for i in range(10)} #{10:0,11:1,12:2...19:9} {"a{}".format(i):10 for i in range(3)}#{"a0":10,"a1":10,"a2":10}
a = 10 if 4>3 else 20 # a = 10 a = 10 if 4<3 else 20 # a =20