爬蟲初學2

2021-10-03 21:08:42 字數 2772 閱讀 9105

採用requests和parsel爬取美女

#parsel 主要用來將請求後的字串格式解析成re,xpath,css進行內容的匹配    本**採用xpath

#爬蟲初學2 "設定請求頭" "運用parsel"進行爬取美女

import requests

import parsel

for page in range(1,6): #列印多頁,新增的第一行

print('***************=正在抓取第{}頁資料********************'.format(page)) #新增第二行

'''#確定爬取的**(可見及可爬),找到headers和設定headers。'''

url=''.format(str(page)) #修改的第三行 #如果換成則for中xpath定位不到相應src,有點瑕疵

#頭3 可用

'connection':'keep-alive',

'host':'www.win4000.com',

'cookie':'',

'user-agent':'mozilla/5.0 (windows nt 6.1; win64; x64; rv:74.0) gecko/20100101 firefox/74.0'}

# 頭1 可用

# headers= #下面header出現'latin-1' codec can't encode character '\u2026',複製的時候沒展開,複製不全

#頭2 不可用

# 'connection':'keep-alive',

# 'host':'www.win4000.com','cookie':'security_session_verify=0fa786…e28452325006c4a53c=1584149760',

# 'user-agent':'mozilla/5.0 (windows nt 6.1; win64; x64; rv:74.0) gecko/20100101 firefox/74.0'} #模擬瀏覽器訪問,主要以鍵對的形式展現出來

#請求頭主要使用uer-agent

'''傳送請求及獲取資料'''

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

data=response.text

# print(data) 沒問題

'''解析資料'''#採用parsel轉化為selector的物件,從而能呼叫selector的方法

data=parsel.selector(data) #selector要大寫

# print(data)

#找到所在/html/body/div[5]/div/div[3]/div[1]/div[1]/div[2]/div/div/ul/li[1]/a #出問題,提取不出資料

data_list=data.xpath('//div[@class="left_bar"]//ul/li/a/@href').extract() #這樣的路徑可以提出資料

# print(data_list) #檔案可以發現,沒問題

'''遍歷列表的所有元素'''

for img in data_list:

# print(img) #沒問題

'''# 傳送相簿url的請求,得到響應'''

response_2=requests.get(img,headers=headers).text

# print(data) #能輸出,這步沒問題

data_2=parsel.selector(response_2)

# print(data_2) #能輸出,沒問題

# # /html/body/div[5]/div/div[3]/div[1]/div[1]/div[2]/div/div/ul/li[1]/a/img 提不出資料

# # img_url=data_2.xpath('//div[@class="clearfix"]/li/a/img/@src').extract_first() #提不出資料

img_url = data_2.xpath('//div[@class="main-wrap"]/div[@class="pic-meinv"]/a/img/@src').extract_first() #可以提資料

# print(img_url) #輸出能開啟的不同位址,沒問題

#但換成另個**,如最開始注釋的**,則輸出不能開啟的相同位址,有問題(分析認為是xpath定位不准,之後改用re試試) 問題1:輸出none,則上一行少打了@(解決);問題2:有的**xpath定位不准

'''請求位址'''

img_data=requests.get(img_url,headers).content #content返回、音訊等內容

'''儲存資料'''

meitu=img_url.split('/')[-1]

# print(meitu) #發現只返回一張,沒起到遍歷的效果

with open('d:\python\pycharm\pycharm 2019.3.3\meitu\img\\'+meitu,'wb') as f:

print('正在儲存:',meitu)

模仿qq群821460695清風老師**

爬蟲 2初學Python網路爬蟲

2 網路爬蟲的限制 3 robotst協議 4 robots協議的遵守方式 web伺服器預設接收人類訪問,受限於編寫水平和目的,網路爬蟲將會為web伺服器帶來巨大的資源開銷 伺服器上的資料有產權歸屬,網路爬蟲獲取資料後牟利將帶來法律風險 網路爬蟲可能具備突破簡單訪問控制的能力,獲得被保護資料 從而洩...

初學python爬蟲

上 之前先說下這個簡易爬蟲框架的思路 排程器 爬蟲的入口 知道沒有url或爬蟲終端,輸出結果 上 1,排程器 from myspider import urls manager,html html paser,html outer class legendspider object def init...

python爬蟲初學

0x01環境搭建 import os import requests from lxml import etree from urllib.parse import urljoin import urllib pip installl 包名字0x02介紹這裡寫了乙個爬 的爬蟲指令碼 如果不能解決就手...