[Python] [Reptile]電子書籍「RedStarShinesonChina」をクロール

1.タスク

古典読むウェブサイトから電子書籍「RedStarShinesonChina」がクロールされる予定です。

2.原則

このサイバー戦争には登山防止策はなく、HTMLページの構造はシンプルで明確であり、初心者が練習するのに適しています。(ただし、ガチョウの作者は、歴史の中で読書の課題を完了するためだけにこの本をクロールすることにしました...)
クローラーの基本的な原則と方法について明確でない小さなパートナーがいる場合は、北京理工大学の「Webクローラーと情報抽出」MOOC〜個人的に言えば、より基本的で体系的で明確です〜

三、コード

from bs4 import BeautifulSoup
import requests

passage = ''
pages = []
for i in range(1703,1763):
    pages.append('http://www.dudj.net/renwuzhuanji/22/' + str(i) + '.html')#构建要爬取的网页地址

for p in pages:
    page = requests.get(p)
    page.encoding = page.apparent_encoding#要根据网页编码更改成对应的编码,否则爬下来的内容是乱码
    page = page.text
    soup = BeautifulSoup(page,'html5lib')
    passage += ('----' + soup.find('h2').text[0:soup.find('h2').text.index('更新时间')] + '\n')#获得章节标题,并去掉“更新时间balabala”字样
    #这里增加‘----’的目的是方便作者之后复制到word中使用查找功能以修改标题的格式
    s = soup.find('div', class_ = 'zw').find_all('p')
    for i in s:
        passage += (i.string + '\n')
    print(len(passage))

次に、クロールされた記事を保存します

passage_file=open('C:\\Red_Star_over_China.txt',mode='w',encoding="utf-8")#注意:要改编码,否则会报错
passage_file.write(passage)
passage_file.close()

四、反射

1.作成者は、ファイルをdocxファイルに直接書き込む方法をさらに研究せず、txtを直接コピーして貼り付けて挑発しました>。<
2。さらに、作成者は、章の下のサブタイトルのみをクロールしたことを発見しました。大きな章のタイトルを取得しませんでした。入手したい場合は、http://www.dudj.net/renwuzhuanji/22/このページの下の章のタイトル情報をクロールしてください〜読書タスクの完了を妨げないので、著者はここで余分な作業をしませんでした。

メッセージを残してください〜

おすすめ

転載: blog.csdn.net/why_not_study/article/details/105264372