1.用requests和beautifulsoup庫方法定向爬取給定**(的資料,螢幕列印爬取的大學排名資訊。 列印示例: 排名 學校名稱 省市 學校型別 1 清華大學 北京 綜合
**
from bs4 import結果beautifulsoup
import
urllib.request
url='
'req=urllib.request.urlopen(url)
data=req.read()
#讀取url**的內容
html=data.decode()
#將二進位制資料轉為字串
soup=beautifulsoup(html,"
html.parser")
#建立名稱為soup的beautifulsoup物件,指定html的解析器為』html.parser『
lis=soup.find('
tbody
').children
#獲取'tbody'的子元素結點
print("
排名\t學校名稱\t省市\t學校型別\t總分")
for li in
lis:
r = li.find_all("td"
)
print(r[0].text.strip() + "
\t" + r[1].text.strip() + "
\t" + r[2].text.strip() + "
" + r[3].text.strip() + "
" + r[4].text.strip())
#輸出
心得:了解了網頁爬取的基本步驟,初步掌握了beautiful soup和request庫的用法
**
import結果requests
import
redef
gethtmltext(url):
kv = #
cookie
try:
r = requests.get(url, headers=kv, timeout=30)
r.raise_for_status()
return
r.text
except
:
return
""def
parsepage(ilt,html):
try:
plt=re.findall(r'
\"view_price\"\:\"[\d\.]*\"
',html)
slt = re.findall(r'
\"view_sales\"\:\".*?\"
', html) #
識別銷量
tlt=re.findall(r'
\"raw_title\"\:\".*?\"
',html)
for i in
range(len(plt)):
price=eval(plt[i].split('
:')[1])
sales=eval(slt[i].split('
:')[1])
title=eval(tlt[i].split('
:')[1])
except
:
print("")#
獲取商品資訊
defprintgoodlist(ilt):
tplt="
\t\t
"print(tplt.format("
序號","
**","
商品名稱"))
count=0
for g in
ilt:
count=count+1
print(tplt.format(count,g[0],g[1]))#
輸出函式
defmain():
goods="書包"
depth=2start_url="
"+goods
infolist=
for i in range(depth+1):
try:
url=start_url+"
&s="+str(44*i)#
翻頁處理
html=gethtmltext(url)
parsepage(infolist,html)
except
:
continue
printgoodlist(infolist)
main()
心得:由於**不允許爬蟲,所以要將headers改掉,在csdn上查閱後發現要用cookie,開啟**商品頁面,登入**賬號,f12進入瀏覽器的開發者除錯工具,點選network,重新重新整理頁面,選擇最上面的search?initiative_id=......的dos檔案,找到request headers,複製獲得cookie。
3.jpgfiledownload實驗
作業要求:爬取乙個給定網頁(或者自選網頁的所有jpg格式檔案
**
import結果reimport
requests
import
urllib.request
import
osr = requests.get("
")path = "
d:/new file/images1/
"html = re.sub("
", ""
, r.text)
i =0
if (not os.path.exists(path)): #
判斷檔案路徑是否存在,不存在就建立
位址篩選
判斷是否src開頭
判斷是否絕對路徑
寫入資料夾
with open(path + name, "wb"
) as code:
code.write(f.read())
print(url) #
輸出路徑
第一次作業 結合三次小作業
如下 import requests from bs4 import beautifulsoup import bs4 def get text url try r requests.get url r.raise for status 判斷狀態碼是否為200 return r.text excep...
第一次作業 結合三次小作業
用requests和beautifulsoup庫爬取上的大學排名 import requests import bs4 from bs4 import beautifulsoup 從網路上獲取大學排名網頁的內容 def gethtmltext url try r requests.get url,t...
第一次作業 結合三次小作業
1 實驗要求 用requests和beautifulsoup庫方法定向爬取給定 的資料,螢幕列印爬取的大學排名資訊。2 實驗 import requests import bs4 from bs4 import beautifulsoup def gethtmltext url try r requ...