Heim  >  Artikel  >  Backend-Entwicklung  >  Python macht peinliche Dinge zum Enzyklopädie-Crawler

Python macht peinliche Dinge zum Enzyklopädie-Crawler

高洛峰
高洛峰Original
2017-02-24 16:07:091287Durchsuche

Ich wachte morgens auf und hatte nichts zu tun, und aus dem Nichts tauchte ein Witz aus der Enzyklopädie der peinlichen Dinge auf. Da du ihn mir geschickt hast, dachte ich, ich würde einen Crawler schreiben, um auf deiner Website zu crawlen , nur um meine Fähigkeiten zu üben, und zweitens macht es ein bisschen Spaß.

Tatsächlich wurde ich in den letzten zwei Tagen mit dem Inhalt der Datenbank konfrontiert. Die gecrawlten Daten können zur zukünftigen Verwendung in der Datenbank gespeichert werden. Okay, lass uns keinen Unsinn reden. Schauen wir uns die vom Programm gecrawlten Daten an. Die Enzyklopädie enthält 30 Seiten, aber als ich die Seitenzahl auf 20 reduzierte, konnte das Programm ausgeführt werden Normalerweise kenne ich den Grund nicht.

Das Programm ist sehr einfach, laden Sie einfach den Quellcode hochPython 制作糗事百科爬虫

Wenn es Teile gibt, die Sie nicht verstehen, tun Sie es kann auf meine drei Top-Artikel verweisen.

# 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()

Weitere Artikel zum Thema „Python macht Enzyklopädie-Crawler peinlich“ finden Sie auf der chinesischen PHP-Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn