Python macht peinliche Dinge zum Enzyklopädie-Crawler

高洛峰
Freigeben: 2017-02-24 16:07:09
Original
1313 Leute haben es durchsucht

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()
Nach dem Login kopieren

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

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!