ホームページ  >  記事  >  バックエンド開発  >  Python は恥ずかしいことを百科事典クローラーにします

Python は恥ずかしいことを百科事典クローラーにします

高洛峰
高洛峰オリジナル
2017-02-24 16:07:091314ブラウズ

朝、何もすることがなく目が覚めると、どこからともなく「恥ずかしいことの百科事典」のジョークが現れました。それから、あなたが私にそれを送ってくれたので、あなたのウェブサイトをクロールするためのクローラーを書いてみようと思いました。まずは練習用ですので、遊びに来てください。

実際、私は過去 2 日間でデータベースの内容にさらされています。クロールされたデータは将来の使用のためにデータベースに保存できます。さて、早速、プログラムによってクロールされたデータの結果を見てみましょう

Python 制作糗事百科爬虫

プログラムでは、恥ずかしいことの百科事典の 30 ページをクロールしたかったのですが、リンクが間違って表示されたことに注意してください。 、ページ数を20ページに減らしたところ、プログラムは正常に実行できました。理由がわかりません。知りたい方は教えていただければ幸いです。

プログラムは非常に簡単で、ソースコードをアップロードするだけです

# coding=utf8

import re
import requests
from lxml import etree
from multiprocessing.dummy import Pool as ThreadPool
import sys

reload(sys)
sys.setdefaultencoding('utf-8')


def getnewpage(url, total):
 nowpage = int(re.search('(\d+)', url, re.S).group(1))
 urls = []

 for i in range(nowpage, total + 1):
  link = re.sub('(\d+)', '%s' % i, url, re.S)
  urls.append(link)

 return urls


def spider(url):
 html = requests.get(url)
 selector = etree.HTML(html.text)

 author = selector.xpath('//*[@id="content-left"]/p/p[1]/a[2]/@title')
 content = selector.xpath('//*[@id="content-left"]/p/p[2]/text()')
 vote = selector.xpath('//*[@id="content-left"]/p/p[3]/span/i/text()')

 length = len(author)
 for i in range(0, length):
  f.writelines('作者 : ' + author[i] + '\n')
  f.writelines('内容 :' + str(content[i]).replace('\n','') + '\n')
  f.writelines('支持 : ' + vote[i] + '\n\n')


if __name__ == '__main__':

 f = open('info.txt', 'a')
 url = 'http://www.qiushibaike.com/text/page/1/'
 urls = getnewpage(url, 20)

 pool = ThreadPool(4)
 pool.map(spider,urls)
 f.close()

わからない部分がある場合は、最初の3つの記事を順番に参照してください。

Python による恥ずかしい百科事典クローラーの作成に関連するその他の記事については、PHP 中国語 Web サイトに注目してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。