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 hoch
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!