利用request輸出首頁內容
import requests # 匯入網路請求模組
headers =
# 定製請求頭
html = requests.get(
'',headers = headers)
# 找到**,get請求
print
(html.text)
# 獲取內容
遍歷10頁內容
import requests # 匯入網路請求模組
headers =
# 定製請求頭
for i in
range(10
):# 遍歷10頁內容
html = requests.get(
''.format
(i+1
),headers = headers)
# 找到**,get請求
print
(html.text)
# 獲取內容
四大物件種類——tag
tag 就是 html中的乙個個標籤
注意:返回的是第乙個符合要求的標籤(即使html中有多個 符合要求的標籤)
lang = 「zh-cn」 (lang就是language的縮寫代表語言; 「zh-cn」,其中zh就是中文的意思,cn代表著中國)
charset = 「utf-8/gbk」 代表著字符集的編碼形式,其中gbk編碼裡面已經包含了很多的漢字了
import requests # 匯入網路請求模組
from bs4 import beautifulsoup # 從bs4模組匯入beautifulsoup方法
headers =
# 定製請求頭
r = requests.get(
"", headers = headers)
# # 找到**,get請求
html = r.text # 網頁內容
soup = beautifulsoup(html,
"lxml"
)# 解析內容
#print(soup.prettify())
print
('***title***'
)print
(soup.title)
# 獲取乙個title標籤
print
('\n***head***'
)print
(soup.head)
# 獲取乙個head標籤
print
("\n***a***"
)print
(soup.a)
# 獲取乙個a標籤
print
("\n***p***"
)print
(soup.p)
# 獲取乙個p標籤
如果想找到全部的tag(標籤),需要使用.find_all方法,就刻意獲得當前tag的所有子節點,並判斷是否符合過濾器的條件,舉個栗子,獲取所有的p標籤
print
(soup.find_all(
"p")
)
keyward引數
這個引數不是該函式內建的函式名,而是對應的想要搜尋的關鍵字的名字,比如
"i" href=
"genindex.html" title=
"general index"
>in***<
/a>
print
(soup.find_all(accesskey=
"i")
)
css選擇器
soup.select()和soup.find_all()方式是等價的,兩者返回的都是列表
)css選擇器的語法規則
四大標籤名不需要加任何修飾 [title、head、a、p]
class名前要加點
id名前要加#
舉個栗子如下,在瀏覽器檢查頁面按住ctrl + f進入查詢介面,輸入「.article-summary」,就可以找到笑話對應的標籤了
如果p標籤裡面有class
css選擇器的搜尋方式就是:p.class(p可以省略)
如果p標籤裡面有id
因為id是唯一的,所以當要選擇id對應的標籤時候,就可以省略一切都不看,直接#xx就可以了
在div中標籤可以省略,直接通過class和id進行定位
實戰解析
1 建立for迴圈爬取前10頁的內容
2 通過css選擇器找到每條內容
3 找到每條標籤裡面的內容並輸出
import requests # 匯入網路請求模組
from bs4 import beautifulsoup # 從bs4模組匯入beautifulsoup方法
headers =
# 定製請求頭
for i in range(10): # 遍歷10頁內容
html = requests.get(''.format(i+1),headers = headers) # 找到**,get請求
soup = beautifulsoup(html.text, 'lxml') # 解析網頁文字
for joke in soup.select('li.article-summary'): # 遍歷符合標籤屬性的內容
title = joke.select('.article-title')[0].text # 取出內容的標題文字
print(title) # 輸出文字
最勇敢的機械人
題目描述 wind設計了很多機械人。但是它們都認為自己是最強的,於是,一場比賽開始了 機器人們都想知道誰是最勇敢的,於是它們比賽搬運一些物品。它們到了乙個倉庫,裡面有n個物品,每個物品都有乙個價值pi和重量wi,但是有些物品放在一起會 並且 具有傳遞性。a和b會 b和c會 則a和c會 機器人們可不想...
最勇敢的機械人
時間限制 1000 ms 記憶體限制 128 mb 機器人們都想知道誰是最勇敢的,於是它們比賽搬運一些物品。它們到了乙個倉庫,裡面有n個物品,每個物品都有乙個價值pi和重量wi,但是有些物品放在一起會 並且 具有傳遞性。a和b會 b和c會 則a和c會 機器人們可不想因此損失自己好不容易從wind那裡...
最敏捷的機械人
題目描述 wind 設計了很多機械人。但是它們都認為自己是最強的,於是,一場比賽開始了 機器人們都想知道誰是最敏捷的,於是它們進行了如下乙個比賽。首先,他們面前會有一排共 n 個數,它們比賽看誰能最先把每連續 k 個數中最大和最小值寫下來,當然,這些機械人運算速度都很快,它們比賽的是誰寫得快。但是 ...