爬蟲二 Python爬蟲入門二

2021-10-23 19:26:00 字數 3056 閱讀 6751

1.認識爬蟲

1.1、什麼是爬蟲

爬蟲:一段自動抓取網際網路資訊的程式,從網際網路上抓取對於我們有價值的資訊。

1.2、python的爬蟲架構

網頁解析器:將乙個網頁字串進行解析,可以按照我們的要求來提取出我們有用的資訊,也可以根據dom樹的解析方式來解析。網頁解析器有正規表示式(直觀,將網頁轉成字串通過模糊匹配的方式來提取有價值的資訊,當文件比較複雜的時候,該方法提取資料的時候就會非常的困難)、html.parser(python自帶的)、beautifulsoup(第三方外掛程式,可以使用python自帶的html.parser進行解析,也可以使用lxml進行解析,相對於其他幾種來說要強大一些)、lxml(第三方外掛程式,可以解析 xml 和 html),html.parser 和 beautifulsoup 以及 lxml 都是以 dom 樹的方式進行解析的。

應用程式:就是從網頁中提取的有用資料組成的乙個應用。

2.訓練爬蟲

3.開始爬蟲

需要匯入或者安裝幾個python庫,如下:

import requests

import csv

from requests.exceptions import requestexception

from bs4 import beautifulsoup

流程:

1.我們需要獲取手機資料,首先獲取所有手機的網頁原始碼,以及url位址如下:

2.下面是完整**:

# _* coding: utf-8 _*_

# _author_:zeng

#2020/8/24_15:16

import requests

import csv

from requests.exceptions import requestexception

from bs4 import beautifulsoup

# 使用requests庫中的.get方法傳送乙個請求至京東電腦頁面,頭部修改為瀏覽器訪問,否則預設為python

def download(url, headers, num =3):

#列印**

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

print(requests.status_codes)

try:

if response.status_code == 200:

return response.content

return none

except requestexception as rr:

print(rr.response)

html = ""

if hasattr(rr.response, 'status_code'):

code = rr.response.status_code

print('error code', code)

if num > 0 and 500 <= code < 600:

html = download(url, headers, num - 1)

else:

code = none

return html

#定義查詢手機的方法

def find_iphone(url, headers):

#呼叫download函式,成功則返回網頁原始碼賦值給r的變數

r = download(url, headers=headers)

#使用bs4 方法生成page物件

page = beautifulsoup(r,"lxml")

#通過find_all方法找到所有關於電腦的原始碼賦值給的all_items

all_items = page.find_all('li', attrs=)

#把獲取到的內容寫入iphone.csv

with open("d:\pycharm\iphone.csv", 'w', newline='',encoding='utf-8') as f:

write = csv.writer(f)

fields = ('id', '**', '名稱' )

write.writerow(fields)

#對所有京東頁面的手機原始碼進行迴圈

for all in all_items:

#獲取手機id

iphone_id = all["data-sku"]

print(f"手機id為:")

#獲取手機**

iphone_price = all.find('div', attrs=).find('i').text

print(f"手機的**為:元")

#獲取手機名字

iphone_name = all.find('div', attrs=).find('em').text

print(f"手機的名稱為:")

#定義乙個集合

row =

#把手機的id,**,名字,新增到集合

#寫入集合

write.writerow(row)

#關閉i/o流

f.close()

def main():

#設定頭部檔案

headers =

#京東搜尋手機的url位址

url = ""

#呼叫find_iphone方法

find_iphone(url,headers=headers)

if __name__ == '__main__':

main()

3.最後的輸出結果

4.到此就大工告成!!!新手入門,大佬勿噴。覺得有幫助的,歡迎點讚。

Python爬蟲入門 二

爬蟲,即網路爬蟲,大家可以理解為在網路上爬行的一直蜘蛛,網際網路就比作一張大網,而爬蟲便是在這張網上爬來爬去的蜘蛛咯,如果它遇到資源,那麼它就會抓取下來。想抓取什麼?這個由你來控制它咯。比如它在抓取乙個網頁,在這個網中他發現了一條道路,其實就是指向網頁的超連結,那麼它就可以爬到另一張網上來獲取資料。...

爬蟲入門(二)

我們了解了requests庫所有的方法以及response物件的所有屬性,但是我們只嘗試了requests的get方法並且只新增了url這個引數,接下來我們舉幾個稍微複雜點的例子來看一下。新增瀏覽器頭import requests try kv r requests.get url,headers ...

python網路爬蟲入門(二)

一 python爬取10頁250條資料中的所有 書單 模組案例方法一 encoding utf 8 import requests from bs4 import beautifulsoup i 25 while i 225 i i 25 c str i resp requests.get c so...