上**:
'''
本**用來爬取的資訊
'''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...