# -*- coding:utf-8 -*-
from urllib import request
from bs4 import beautifulsoup
import chardet
import re
def download(urls):
for item in urls:
print(item[3] + ':' + '' + item[1])
#輸出一下找到了那些章節,與對應的**
if sure == 'y' or sure == 'y':
for item in urls:
f = open(item[3], mode='w+', encoding='utf-8')
#建立文字用章節名命名
download_url = '' + item[1]
head = {}
download_req = request.request(url=download_url, headers=head)
download_response = request.urlopen(download_req)
download_html = download_response.read().decode('gbk', 'ignore')
soup_texts = beautifulsoup(download_html, 'lxml')
#獲取章節的內容頁,解碼並結構化
texts = soup_texts.find_all(id="content")
soup_text = beautifulsoup(str(texts), 'lxml')
#找到需要的內容
f.write(soup_text.div.text.replace('\xa0', ''))
#把不要的字元去掉如何寫入文字
f.close
print('all down')
return
def find_url(target_url):
#從目錄頁獲取每乙個章節的**
head = {}
head[
req = request.request(url=target_url, headers=head)
#設定**頭,這個**不知道python的預設頭能不能訪問
response = request.urlopen(req)
html = response.read()
code = chardet.detect(html)['encoding']
#這個不能用,因為它會識別為簡體但是還有一部分是繁體
html = html.decode('gbk')
#用gbk解碼支援簡繁
soup = beautifulsoup(html, 'html.parser')
#用beatifulsoup結果化一下,不要也可以
result = re.findall('(.*?)', str(soup.find_all(id='list')))
#正則匹配
download(urls=result)
def search(txt_name):
#利用筆趣閣**的搜尋功能
target_name = str(txt_name.encode("gbk")).upper()
#這個**用的get方法,搜尋的內容用gbk編碼加在後面,但並不是直接加要變換
target_url = '/modules/article/soshu.php?searchkey='
i = 2
while i < len(target_name) - 1:
if target_name[i] == '\\':
target_url += '%'
i += 2
continue
target_url += target_name[i]
i += 1
#此時的target_url的內容就是處理後的**
head = {}
head[
req = request.request(url=target_url, headers=head)
html = request.urlopen(req)
if target_url != html.geturl():
#這個**如果搜尋結果只有乙個就會自動開啟
print("已經找到,正在提取\n")
target_url=html.geturl()
find_url(target_url)
return
html = html.read().decode('gbk')
result = re.finditer(r'(.*?)', html)
#正則匹配
flag = 0
for item in result:
#在多個結果中找到我們要的那個,此處修改可以支援模糊化搜尋
if item[2] == txt_name:
target_url = item[1]
print("已經找到,正在提取\n")
find_url(target_url=target_url)
return
print('找不到')
if __name__=='__main__':
name = input("輸入要找的**名稱:")
search(txt_name=name)
python爬蟲 第乙個爬蟲
1.本地安裝了nginx,在預設的html目錄下建立測試html 如圖,即index.html導向a,b,c 3個html,a.html又可以導向aa,bb兩個html,c.html可以導向cc.html。2.修改nignx配置使得本地可以訪問寫的kmtest裡的index.html。參考文件 ng...
Python 第乙個爬蟲
1 import urllib.request 2importre3 4class downpic 56 def init self,url,re str 7 self.url url 8 self.re str re str910 defgethtml self,url 11 page urlli...
人生的第乙個Python程式
今天因為給beaubeau提供的 號碼做sql檔案,一開始收到zip檔案解開壓縮之後被嚇到了 29個csv檔案,每個檔案儲存了1000個獎券id和號碼 照上次一樣,開啟每個csv檔案做先做單獨的sql檔案,每個sql中有1000條插入語句,隨後將29個檔案的所有sql語句都複製貼上到同乙個總的sql...