Heim  >  Artikel  >  Backend-Entwicklung  >  So erstellen Sie ein Beispiel für Crawler-Code in Python

So erstellen Sie ein Beispiel für Crawler-Code in Python

coldplay.xixi
coldplay.xixiOriginal
2020-08-11 13:58:529623Durchsuche

So verwenden Sie das Python-Crawler-Codebeispiel: Rufen Sie zuerst die Browserinformationen ab und verwenden Sie den URL-Code, um Post-Daten zu generieren. Installieren Sie dann pymysql und speichern Sie die Daten in MySQL.

So erstellen Sie ein Beispiel für Crawler-Code in Python

Methoden für Python-Crawler-Codebeispiele:

1, urllib und BeautifulfuSoup

Browserinformationen abrufen

from urllib import request
req = request.urlopen("http://www.baidu.com")
print(req.read().decode("utf-8"))

Simulieren Sie einen echten Browser: Carry user-Agent. header

(der Zweck ist es nicht Lassen Sie den Server davon ausgehen, dass es sich um einen Crawler handelt. Wenn diese Browserinformationen nicht enthalten sind, wird möglicherweise ein Fehler gemeldet

req = request.Request(url) #此处url为某个网址
req.add_header(key,value)  #key即user-Agent,value即浏览器的版本信息
resp = request.urlopen(req)
print(resp.read().decode("utf-8"))
Verwenden Sie den URL-Code, um Beitragsdaten zu generieren

from urllib import parse
Verwenden Sie den Beitrag
postData = parse.urlencode([
    (key1,val1),
    (key2,val2),
    (keyn,valn)
])

Vollständiges Codebeispiel (nehmen Sie den Crawling-Wikipedia-Homepage-Link als Beispiel)
request.urlopen(req,data=postData.encode("utf-8")) #使用postData发送post请求
resp.status  #得到请求状态
resp.reason #得到服务器的类型

2. Speichern Sie Daten in MySQL

Installieren Sie pymysql

Installation über Pip :

#-*- coding:utf-8 -*-
from bs4 import BeautifulSoup as bs
from urllib.request import urlopen 
import re
import ssl
#获取维基百科词条信息
ssl._create_default_https_context = ssl._create_unverified_context #全局取消证书验证
#请求URL,并把结果用utf-8编码
req = urlopen("https://en.wikipedia.org/wiki/Main page").read().decode("utf-8")
#使用beautifulsoup去解析
soup = bs(req,"html.parser")
# print(soup)
#获取所有href属性以“/wiki/Special”开头的a标签
urllist = soup.findAll("a",href=re.compile("^/wiki/Special"))
for url in urllist:
#去除以.jpg或.JPG结尾的链接
if not re.search("\.(jpg|JPG)$",url["href"]):
#get_test()输出标签下的所有内容,包括子标签的内容;
#string只输出一个内容,若该标签有子标签则输出“none
print(url.get_text()+"----->"+url["href"])
# print(url)

oder über die Installationsdatei:

$ pip install pymysql

Verwenden von

$ python setup.py install

3. Vorsichtsmaßnahmen für Crawler

Robots-Protokoll (Roboterprotokoll, auch Crawler-Protokoll genannt), der vollständige Name lautet „Web-Crawler-Ausschlussprotokoll“. Die Website teilt der Suchmaschine mit, welche Seiten durch den Robots-Protokollabruf gecrawlt werden können, welche Seiten nicht abgerufen werden können. Im Allgemeinen unter der Hauptseite, z. B. https://en.wikipedia.org/robots.txt

#引入开发包
import pymysql.cursors
#获取数据库链接
connection = pymysql.connect(host="localhost",
user = 'root',
password = '123456',
db ='wikiurl',
charset = 'utf8mb4')
try:
#获取会话指针
with connection.cursor() as cursor
#创建sql语句
sql = "insert into `tableName`(`urlname`,`urlhref`) values(%s,%s)"
#执行SQL语句
cursor.execute(sql,(url.get_text(),"https://en.wikipedia.org"+url["href"]))
#提交
connection.commit()
finally:
#关闭
connection.close()

Verwandte Empfehlungen:

Programmiervideokurs

Das obige ist der detaillierte Inhalt vonSo erstellen Sie ein Beispiel für Crawler-Code in Python. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen 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