Python3 baby網的資料爬取

2021-08-18 14:17:04 字數 2166 閱讀 1325

上**:

'''

本**用來爬取的資訊

'''import requests,csv,time,random

from bs4 import beautifulsoup

from fake_useragent import useragent

#獲取ip列表

def get_ip_list():

f=open('ip.txt','r')

ip_list=f.readlines()

f.close()

return ip_list

#從ip列表中獲取隨機ip

def get_random_ip(ip_list):

proxy_ip = random.choice(ip_list)

proxy_ip=proxy_ip.strip('\n')

proxies =

return proxies

#功能:將資訊寫入檔案

def write_file(filepath,row):

with open(filepath,'a+',encoding='utf-8',newline='') as csvfile:

spanreader = csv.writer(csvfile,delimiter='|',quoting=csv.quote_minimal)

spanreader.writerow(row)

#解析baby網

def get_ennames_list(url,ip_list):

print('輸入進來的url為:{}'.format(url))

#獲取隨機ip,headers防止ip被封

headers =

proxies = get_random_ip(ip_list)

try:

req = requests.get(url=url,headers=headers,proxies=proxies,timeout=10)

except:

print('執行出錯10秒後重新執行')

time.sleep(10)

headers =

proxies = get_random_ip(ip_list)

req = requests.get(url=url,headers=headers,proxies=proxies,timeout=10)

#在利用find_all()注意要準確定位

soup = beautifulsoup(req.text,'lxml')

content = soup.find('table',class_='table')

content = content.find('tbody')

content = content.find_all('tr')

name =

#列表中沒有find_all()方法,故需要利用for語句

for each in content:

return name

#獲取baby網中所有的的英文名

def get_ennames(letter,ip_list):

for number in range(1,100):

url = ''.format(letter,number)

#乙個網頁乙個網頁的獲取我們需要的英文名

name = get_ennames_list(url,ip_list)

#當page遇到最大值時,name就會為空,我們利用這一點進行切換,進入下乙個字母的爬取

if not name:

print('{}開頭的英文名共{}個'.format(letter,number-1))

break

for each in name:

#將乙個列表分為多個列表,從而實現換行

a=write_file('a-z.csv',a)

if __name__ == "__main__":

ip_list = get_ip_list()

for letter in 'abcdefghijklmnopqrstuvwxyz':

get_ennames(letter,ip_list)

BABY夜談大資料 基於內容的推薦

起因 這個系列主要也是自己最近在研究大資料方向,所以邊研究 開發也邊整理相關的資料。網上的資料經常是碎片式的,如果要完整的看完可能需要同時看好幾篇文章,所以我希望有興趣的人能夠更輕鬆和快速地學習相關的知識。我會盡可能用簡單的方式去簡介一些概念和演算法,盡可能讓沒有工科基礎的人也能大致了解。ps 由於...

python3程式設計教學 Python3 網路程式設計

python3 網路程式設計 python 提供了兩個級別訪問的網路服務。低階別的網路服務支援基本的 socket,它提供了標準的 bsd sockets api,可以訪問底層作業系統socket介面的全部方法。高階別的網路服務模組 socketserver,它提供了伺服器中心類,可以簡化網路伺服器...

Python3網路程式設計

python提供了2個級別的訪問翁羅服務 低階別的網路服務支援socket,他提供了標準的bsd sockets api,可以訪問底層作業系統socket介面的全部方法 高階別的網路服務模組socket server,他提供了伺服器中心類,可以簡化伺服器的開發 使用此函式建立套接字,語法 socke...