python 人生的第乙個小爬蟲 爬小說 儲存一下

2021-08-21 12:42:27 字數 2744 閱讀 7029

# -*- 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...