資料採集技術第一次作業

2022-07-30 19:57:14 字數 4357 閱讀 7288

作業要求:用requests和beautifulsoup庫方法定向爬取給定**( )的資料,螢幕列印爬取的大學排名資訊。

import requests

from bs4 import beautifulsoup

url = ''

headers =

r = requests.get(url = url,headers = headers)

r.encoding = 'utf-8'

page_text = r.text

soup = beautifulsoup(page_text,"lxml")

all_list=

tr_list = soup.findall("tr")

for tr in tr_list:

arr =

td_list = tr.findall("td")

if len(td_list)==0:

continue

for td in td_list:

print("排名 學校名稱 省市 學校型別 總分")

for row in all_list:

row[0]=row[0].strip()

row[1]=row[1].strip()

row[2]=row[2].strip()

row[3]=row[3].strip()

row[4]=row[4].strip()

print(row[0],row[1],row[2],row[3],row[4])

from lxml import etree

import requests

url = ''

headers =

r = requests.get(url = url,headers = headers)

r.encoding = 'utf-8'

page_text = r.text

tree = etree.html(page_text)

print("排名 學校名稱 省市 學校型別 總分")

tr_list = tree.xpath('//table[@class="rk-table"]/tbody/tr')

for tr in tr_list:

td_1 = tr.xpath('./td[1]//text()')[0].strip()

td_2 = tr.xpath('./td[2]//text()')[0].strip()

td_3 = tr.xpath('./td[3]//text()')[0].strip()

td_4 = tr.xpath('./td[4]//text()')[0].strip()

td_5 = tr.xpath('./td[5]//text()')[0].strip()

print(td_1,td_2,td_3,td_4,td_5)

執行結果

一共有567所高校

第一次上手的感覺還是有點難度,在定位標籤的時候就花了不少時間,而且提取標籤中我們所需要的文字中也夾帶著'\n','\t',花了不小功夫才解決這些問題。經過這一次實驗,自己對爬蟲的步驟有了大致的了解。

1、指定url

2、ua偽裝

3、發起請求

4、獲取響應資料並解析

5、持久化儲存。

自己對resquests庫的用法也有了了解,自己也會看一些抓包工具,昨天自己用xpath來解析感覺速度就快了很多。經過這次實驗,算是小小的入門吧。

from bs4 import beautifulsoup

import requests

headers =

url = "書包&page=%d" #自定義自己要爬取的頁數,這裡page步長2實際上只有1個頁面

r = requests.get(url = url,headers=headers)

r.encoding = 'utf-8'

text = r.text

soup = beautifulsoup(text,"lxml")

count = 1

print("序號 **\t商品名稱")

for j in range(1,10,2):

new_url = format(url,str(j)) #j要為字串型別

tags1 = soup.select("div[class='p-price'] strong i") #定位2種標籤

tags2 = soup.select("div[class='p-name p-name-type-2'] a em")

for i in range(len(tags1)):

print(count,tags1[i].text,tags2[i].text.replace("\n","").replace("京東超市","").replace("\t",""))#去掉不必要的空格

count = count + 1

s=j//2+1

print("*************************第"+str(s)+"頁商品列印完畢*************************")

這次爬取京東商品的實驗我用的是select,感覺select還蠻好用的,正則的話感覺難度有點大,並且我沒有加入重新整理商品的模組,乙個頁面只能顯示出一半的商品(30)個,並且前兩天爬蟲的時候好像一定要加頭部了,不加頭部就訪問不了。這裡page值為0,1時是第一頁,2,3是第二頁,以此類推,所以遍歷的時候步長要取2。

感覺資料解析只要定位到標籤的位置,剩下的就比較簡單了。

作業要求:爬取乙個給定網頁(或者自選網頁的所有jpg格式檔案

import os 

import requests

from bs4 import beautifulsoup

import re

if not os.path.exists('./jpgfile'): #當資料夾不存在的時候,在當前目錄下建立該資料夾

list2 = re.findall("/attach.*?jpg",r,re.i) #正規表示式匹配我們所需要的**

for i in list2: #re.i忽略正規表示式的大小寫,因為有個是大寫的jpg

jpg_name = path.split('/')[-1] #獲取名稱

這次實驗相較前兩次難度會大一些,不過有了前兩次實驗的鋪墊,這次實驗做起來也比較得心應手。首先建立乙個資料夾來儲存所有的,用select來找出我們要的jpg檔案的鏈結,這裡要注意補全**。我訪問的**是,這裡有點坑,有5張是在乙個文字中,並且有一張是大寫的jpg,所以得用正規表示式來匹配到我們所需要的的位址,re.i忽略大小寫,然後再補全**。然後對每個位址發起url請求,這裡獲取二進位制資料,然後給命名,依次寫入資料夾。

資料採集第一次作業

如下 import requests from bs4 import beautifulsoup import bs4 import urllib from bs4 import unicodedammit url try headers req urllib.request.request url...

資料採集第一次作業 2022

作業1 題目 要求用urllib和re庫方法定向爬取給定 2020中國最好學科排名的資料。輸出資訊如下 2020排名 全部層次 學校型別總分1 前2 中國人民大學 1069.0 2.解題 url headers req urllib.request.request url,headers heade...

第一次作業

1.用較低的成本,開發出滿足客戶需求的軟體,開發的軟體可靠性高,易於維護和移植 2.分為設計階段,開發階段和測試執行階段 1 設計階段 分析客戶需求,明確要解決哪些問題,實現哪些功能,以及確定基本方法 2 開發階段 a.概要設計 畫出流程圖,進行模組化劃分,建立模組的層次結構以及呼叫關係 b.詳細設...