序文
私は今学期にPythonを使い始めました。シンプルさと使いやすさがPythonの最大の利点だと思います。コード形式の要件はそれほど厳密ではありません。コードの記述の使用は優れています。Pythonでは、クローラーに最も興味があります。詳細データ、およびより良いデータ分析は、より多くの価値を得ることができます
斬新なアイデアを這う
最初に小説を観察し、静的か動的かを区別して、小説の章をクリックします。F12の[要素]オプションを使用して、記事のコンテンツがdiv id = 'content'タグに保存されていることを確認できます。 、ウェブサイトが静的であることを示します動的なSeleniumクロールを使用する場合も可能ですが、ウェブサイトは静的であるため、動的なクロールを使用する必要はありません。
次に、対象の小説を選択した後、小説のカタログページをクリックし、F12の[要素]オプションを使用すると、小説のすべての章のURLが規則的であることがわかります。
すべてのチャプターのURLにクロールして1を保存し、URLを完成させてから、各チャプターを入力してタイトルと本文のコンテンツをクロールし、それをtxtに保存します。
汎用モジュールの実現
アイデアを明確にした後、手順に従って機能を段階的に完了します。
1.リクエストリクエストライブラリとデータクリーニングマッチング再ライブラリを使用します
import requests import re
reモジュールは、独自のPython文字列照合モジュールです。このモジュールの多くの関数は正規表現に基づいて実装され、正規表現を使用して文字列のあいまい照合を実行し、必要な文字列部分を抽出します。すべての言語。注意:
(1)reモジュールはpythonに固有です。
(2)正規表現はすべてのプログラミング言語で使用できます。
(3)reモジュールと正規表現は文字列を操作します。
私には学習とコミュニケーションの輪があります。人の数はそれほど多くありませんが、Pythonを学ぶ人は誰でも学び、コミュニケーションするようになります。どのような問題
が発生しますか?お互いに話し合い、学術的な問題を交換します。ペンギングループとのコミュニケーションを学ぶ:745895701
2.ターゲットWebサイトにURLリクエストを送信します
s = requests.Session()url = 'https://www.xsbiquge.com/96_96293/'html = s.get(url)html.encoding = 'utf-8'
3.Webサイトのディレクトリページですべての章のURLを見つけます
#获取章节
caption_title_1 = re.findall(r'<a href="(/96_96293/.*?\.html)">.*?</a>',html.text)
4.もう一度尋ねるのに便利なように、すべてのチャプターURLの取得を完了します
for i in caption_title_1: caption_title_1 = '新笔趣阁_书友最值得收藏的网络小说阅读网!'+i
5.取得した各URLにアクセスして、タイトルと本文のコンテンツを見つけます
s1 = requests.Session()r1 = s1.get(caption_title_1)r1.encoding = 'utf-8' # 获取章节名
#meta是head头文件中的内容,用这个获取章节名
name = re.findall(r'<meta name="keywords" content="(.*?)" />',r1.text)[0]print(name)
#这里print出章节名,方便程序运行后检查文本保存有无遗漏
chapters = re.findall(r'<div id="content">(.*?)</div>',r1.text,re.S)[0]
6.得られたボディコンテンツをきれいにします
chapters = chapters.replace(' ', '')
chapters = chapters.replace('readx();', '')
chapters = chapters.replace('& lt;!--go - - & gt;', '')
chapters = chapters.replace('<!--go-->', '')
chapters = chapters.replace('()', '') # 转换字符串
s = str(chapters) #将内容中的<br>替换
s_replace = s.replace('<br/>',"\n") while True:
index_begin = s_replace.find("<")
index_end = s_replace.find(">",index_begin+1)
if index_begin == -1:
break
s_replace = s_replace.replace(s_replace[index_begin:index_end+1],"")
pattern = re.compile(r' ',re.I)#使匹配对大小写不敏感
fiction = pattern.sub(' ',s_replace)
7.データをプリセットtxtに保存します
path = r'F:\title.txt' # 这是我存放的位置,你可以进行更改#a是追加
file_name = open(path,'a',encoding='utf-8')
file_name.write(name)
file_name.write('\n')
file_name.write(fiction)
file_name.write('\n')#保存完之后关闭
file_name.close()
運転結果
プログラムのソースコード
import requestsimport res = requests.Session()url = 'https://www.xsbiquge.com/96_96293/'
html = s.get(url)html.encoding = 'utf-8'# 获取章节
caption_title_1 = re.findall(r'<a href="(/96_96293/.*?\.html)">.*?</a>',html.text)
# 写文件+path = r'F:\title.txt'
# 这是我存放的位置,你可以进行更改
#a是追加
file_name = open(path,'a',encoding='utf-8')
# 循环下载每一张
for i in caption_title_1: caption_title_1 = '新笔趣阁_书友最值得收藏的网络小说阅读网!'+i
# 网页源代码
s1 = requests.Session()
r1 = s1.get(caption_title_1)
r1.encoding = 'utf-8'
# 获取章节名
#meta是head头文件中的内容,用这个获取章节名 name = re.findall(r'<meta name="keywords" content="(.*?)" />',r1.text)[0]
print(name)
file_name.write(name)
file_name.write('\n')
# 获取章节内容
#re.S在字符串a中,包含换行符\n,在这种情况下:
#如果不使用re.S参数,则只在每一行内进行匹配,如果一行没有,就换下一行重新开始。而使用re.S参数以后,正则表达式会将这个字符串作为一个整体,在整体中进行匹配。
chapters = re.findall(r'<div id="content">(.*?)</div>',r1.text,re.S)[0]
#换行
chapters = chapters.replace(' ', '')
chapters = chapters.replace('readx();', '')
chapters = chapters.replace('& lt;!--go - - & gt;', '')
chapters = chapters.replace('<!--go-->', '')
chapters = chapters.replace('()', '') # 转换字符串
s = str(chapters) #将内容中的<br>替换
s_replace = s.replace('<br/>',"\n") while True:
index_begin = s_replace.find("<")
index_end = s_replace.find(">",index_begin+1)
if index_begin == -1:
break
s_replace = s_replace.replace(s_replace[index_begin:index_end+1],"")
pattern = re.compile(r' ',re.I)#使匹配对大小写不敏感
fiction = pattern.sub(' ',s_replace)
file_name.write(fiction)
file_name.write('\n')file_name.close()
総括する
このプロジェクトを通じて、システムの機能モジュール全体を設計および実装することができました。これは、特にデータマイニングとデータ分析において、私に大きな利益をもたらし、自習能力を向上させました。
プログラムコードは、小説をクロールする機能を実現し、データをクリーンアップします。しかし、これは小説をクロールするだけです。汎用モジュールに大きなループを追加すると、Webサイト上のすべての小説のURLを取得できます。これらは私の考えやアイデアです。他にアイデアがあれば、コメントして交換することができます。