Heim > Backend-Entwicklung > Python-Tutorial > Wie sollen Python-Crawler-Daten verarbeitet werden?

Wie sollen Python-Crawler-Daten verarbeitet werden?

PHP中文网
Freigeben: 2017-06-20 16:27:57
Original
2524 Leute haben es durchsucht

1. Verstehen Sie zunächst die folgenden Funktionen

Variablenlänge()-Funktion festlegen char_length() Funktion ersetzen() max()-Funktion
Variablensatz @Variablenname=Wert festlegen

🎜>
set @address='中国-山东省-聊城市-莘县';select @address
Nach dem Login kopieren
1.2. Unterschiede zwischen der Funktion length() char_length()

select length('a')
,char_length('a')
,length('中')
,char_length('中')
Nach dem Login kopieren
1.3. Kombination der Funktion replacement() und der Funktion length()

set @address='中国-山东省-聊城市-莘县';select @address
,replace(@address,'-','') as address_1
,length(@address) as len_add1
,length(replace(@address,'-','')) as len_add2
,length(@address)-length(replace(@address,'-','')) as _count
Nach dem Login kopieren
etl-Reinigung field Wie kann man bestimmen, wie viele getrennte Felder zu einer neuen Datentabelle hinzugefügt werden sollen, wenn offensichtliche Trennzeichen vorhanden sind?

Berechnen Sie die maximale Anzahl von - Zeichen in com_industry, um zu bestimmen, wie viele Felder hinzugefügt werden können Die Anzahl der Felder in dieser Tabelle beträgt 3, sodass sie in 4 Branchenfelder aufgeteilt werden kann, d

select max(length(com_industry)-length(replace(com_industry,'-',''))) as _max_count
from etl1_socom_data
Nach dem Login kopieren
1.5. Bedingte Beurteilungsfunktion, Fall, wenn

Fall, wenn dann, wenn dann sonst der Wert als Feldname endet

set @address='中国-山东省-聊城市-莘县';
select 
substring_index(@address,'-',1) as china,
substring_index(substring_index(@address,'-',2),'-',-1) as province,
substring_index(substring_index(@address,'-',3),'-',-1) as city,
substring_index(@address,'-',-1) as district
Nach dem Login kopieren

2. Kesselkonvertierung etl1 Reinigung

Der erste Schritt zur Tabellenerstellung ist im Video. Der
select case when 89>101 then '大于' else '小于' end as betl1_socom_data
Nach dem Login kopieren
-Feldindex erwähnt den Indexalgorithmus nicht. Es wird empfohlen, den BTREE-Algorithmus zu verwenden, um die Abfrageeffizienz zu verbessern

2.1.kettle-Dateiname: trans_etl1_socom_data

2.2. Steuerelemente einbeziehen: Tabelleneingabe>>> 1 Screenshot

2.4, Tabelleneingabe 2.4, SQL-Skript-Vorreinigung der Felder com_district und com_industry

2.5, Tabellenausgabe

Hinweise zu Tabellenausgabeeinstellungen

<code class="sql"><span class="hljs-keyword">select a.*,<span class="hljs-keyword">case <span class="hljs-keyword">when com_district <span class="hljs-keyword">like <span class="hljs-string">&#39;%业&#39; <span class="hljs-keyword">or com_district <span class="hljs-keyword">like <span class="hljs-string">&#39;%织&#39; <span class="hljs-keyword">or com_district <span class="hljs-keyword">like <span class="hljs-string">&#39;%育&#39; <span class="hljs-keyword">then <span class="hljs-literal">null <span class="hljs-keyword">else com_district <span class="hljs-keyword">end <span class="hljs-keyword">as com_district1
,<span class="hljs-keyword">case <span class="hljs-keyword">when com_district <span class="hljs-keyword">like <span class="hljs-string">&#39;%业&#39; <span class="hljs-keyword">or com_district <span class="hljs-keyword">like <span class="hljs-string">&#39;%织&#39; <span class="hljs-keyword">or com_district <span class="hljs-keyword">like <span class="hljs-string">&#39;%育&#39; <span class="hljs-keyword">then <span class="hljs-keyword">concat(com_district,<span class="hljs-string">&#39;-&#39;,com_industry) <span class="hljs-keyword">else com_industry <span class="hljs-keyword">end <span class="hljs-keyword">as com_industry_total
,<span class="hljs-keyword">replace(com_addr,<span class="hljs-string">&#39;地 址:&#39;,<span class="hljs-string">&#39;&#39;) <span class="hljs-keyword">as com_addr1
,<span class="hljs-keyword">replace(com_phone,<span class="hljs-string">&#39;电 话:&#39;,<span class="hljs-string">&#39;&#39;) <span class="hljs-keyword">as com_phone1
,<span class="hljs-keyword">replace(com_fax,<span class="hljs-string">&#39;传 真:&#39;,<span class="hljs-string">&#39;&#39;) <span class="hljs-keyword">as com_fax1
,<span class="hljs-keyword">replace(com_mobile,<span class="hljs-string">&#39;手机:&#39;,<span class="hljs-string">&#39;&#39;) <span class="hljs-keyword">as com_mobile1
,<span class="hljs-keyword">replace(com_url,<span class="hljs-string">&#39;网址:&#39;,<span class="hljs-string">&#39;&#39;) <span class="hljs-keyword">as com_url1
,<span class="hljs-keyword">replace(com_email,<span class="hljs-string">&#39;邮箱:&#39;,<span class="hljs-string">&#39;&#39;) <span class="hljs-keyword">as com_email1
,<span class="hljs-keyword">replace(com_contactor,<span class="hljs-string">&#39;联系人:&#39;,<span class="hljs-string">&#39;&#39;) <span class="hljs-keyword">as com_contactor1
,<span class="hljs-keyword">replace(com_emploies_nums,<span class="hljs-string">&#39;公司人数:&#39;,<span class="hljs-string">&#39;&#39;) <span class="hljs-keyword">as com_emploies_nums1
,<span class="hljs-keyword">replace(com_reg_capital,<span class="hljs-string">&#39;注册资金:万&#39;,<span class="hljs-string">&#39;&#39;) <span class="hljs-keyword">as com_reg_capital1
,<span class="hljs-keyword">replace(com_type,<span class="hljs-string">&#39;经济类型:&#39;,<span class="hljs-string">&#39;&#39;) <span class="hljs-keyword">as com_type1
,<span class="hljs-keyword">replace(com_product,<span class="hljs-string">&#39;公司产品:&#39;,<span class="hljs-string">&#39;&#39;) <span class="hljs-keyword">as com_product1
,<span class="hljs-keyword">replace(com_desc,<span class="hljs-string">&#39;公司简介:&#39;,<span class="hljs-string">&#39;&#39;) <span class="hljs-keyword">as com_desc1<span class="hljs-keyword">from s_socom_data <span class="hljs-keyword">as a</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></code><br/><br/><br/>
Nach dem Login kopieren
Hinweise:

① Aktivieren Sie die Option „Tabelle ausschneiden“ nicht, wenn inkrementelle Crawler-Vorgänge beteiligt sind

②Datenverbindungsprobleme Wählen Sie die Datenbank aus, in der Die Tabelle in der Tabellenausgabe befindet sich
③Feldzuordnungsprobleme Stellen Sie sicher, dass die Felder im Datenfluss und die Anzahl der Felder in der physischen Tabelle konsistent sind
3. Kettle-Konvertierung etl2-Reinigung
Erstellen Sie zunächst die Tabelle und fügen Sie 4 Felder hinzu, um die Schritte im Video zu demonstrieren.
Im Feldindex wird der empfohlene Indexalgorithmus nicht erwähnt. Der BTREE-Algorithmus verbessert die Abfrageeffizienz.


Führen Sie hauptsächlich die Feldaufteilung und -bereinigung auf dem neuen durch com_industry generiert von etl1
3.1.kettle Dateiname: trans_etl2_socom_data
3.2. Einschließlich Steuerelemente: Tabelleneingabe>>> Tabellenausgabe
3.3. Datenflussrichtung: etl1_socom_data>>>>etl2_socom_data

Hinweise:

① Aktivieren Sie die Option „Tabelle ausschneiden“ nicht, wenn inkrementelle Crawler-Vorgänge beteiligt sind.

②Tabelle für Datenverbindungsprobleme auswählen. Die Datenbank, in der sich die Tabelle in der Ausgabe befindet.

③Feldzuordnungsprobleme stellen sicher, dass die Nummer der Felder im Datenstrom und in der physischen Tabelle sind konsistent



Screenshot der Kettle-Konvertierung 2


3.4 Das SQL-Skript teilt com_industry und schließt die Bereinigung ab aller Felder. Registrierte Kapitalfeld-Zeitbeziehungen können ohne detaillierte Demontage und Anpassung des Codes angepasst werden

4.1 Ob die Crawler-Datenquellendaten übereinstimmen die Website-Daten
Wenn der Crawler und die Datenverarbeitung zusammen verarbeitet werden, wurde die Beurteilung bereits beim Crawlen vorgenommen. Dieser Schritt kann weggelassen werden. Wenn Sie eine Verbindung zu den vorgelagerten Crawler-Kollegen herstellen, muss dieser Schritt zuerst beurteilt werden. Andernfalls ist die Bereinigung nutzlos. Im Allgemeinen müssen Crawler-Kollegen die angeforderte URL für die spätere Datenverarbeitung speichern, um die Datenqualität zu überprüfen
4.2 Berechnen Sie die Crawler-Datenquelle und das Datenvolumen jeder ETL-Reinigungsdatentabelle
Hinweis: Es gibt keine Aggregationsfilterung im SQL-Skript. Das Datenvolumen der drei Tabellen sollte gleich sein

Bei der Abfrage der folgenden Tabelle mit SQL bin ich im gleichen Datenbank. Wenn es sich nicht in derselben Datenbank befindet, sollte das „von“ nach dem Datenbanknamen hinzugefügt werden.
select a.*,case 
#行业为&#39;&#39;的值 置为空when length(com_industry)=0 then null
#其他的取第一个-分隔符之前else substring_index(com_industry,&#39;-&#39;,1)  end as com_industry1,case 
when length(com_industry)-length(replace(com_industry,&#39;-&#39;,&#39;&#39;))=0 then null
#&#39;交通运输、仓储和邮政业-&#39; 这种值 行业2 也置为nullwhen length(com_industry)-length(replace(com_industry,&#39;-&#39;,&#39;&#39;))=1 and length(substring_index(com_industry,&#39;-&#39;,-1))=0 then nullwhen length(com_industry)-length(replace(com_industry,&#39;-&#39;,&#39;&#39;))=1  then substring_index(com_industry,&#39;-&#39;,-1)else substring_index(substring_index(com_industry,&#39;-&#39;,2),&#39;-&#39;,-1)end as com_industry2,case 
when length(com_industry)-length(replace(com_industry,&#39;-&#39;,&#39;&#39;))<=1 then nullwhen length(com_industry)-length(replace(com_industry,&#39;-&#39;,&#39;&#39;))=2 then  substring_index(com_industry,&#39;-&#39;,-1)else substring_index(substring_index(com_industry,&#39;-&#39;,3),&#39;-&#39;,-1)end as com_industry3,case 
when length(com_industry)-length(replace(com_industry,&#39;-&#39;,&#39;&#39;))<=2 then nullelse substring_index(com_industry,&#39;-&#39;,-1)end as com_industry4from etl1_socom_data as a
Nach dem Login kopieren
wird nicht empfohlen, wenn die Datenmenge groß ist.

4.2.2 Vergleich der gesamten Tabellenausgabe nach Abschluss der Kesselkonvertierung

Die Gesamtmenge der von der Kesseltabelle ausgegebenen Daten

4.3 Überprüfen Sie die ETL-Reinigungsqualität

Stellen Sie sicher, dass die ersten beiden Schritte korrekt sind, und die Selbstinspektion der für die Datenverarbeitung verantwortlichen ETL-Reinigungsarbeiten beginnt mit der Bereinigung der Datenquelle. Die Feldskriptprüfung der Socom-Website bereinigt hauptsächlich die Region und die Branche und ersetzt die redundanten Felder in anderen Feldern.
select count(1) from s_socom_dataunion all
select count(1) from etl1_socom_dataunion all
select count(1) from etl2_socom_data
Nach dem Login kopieren
Suchen Sie die Seiten-URL und Website-Daten zur Überprüfung

wo es so geschrieben ist. Es ist praktisch, den Reinigungsstatus von a zu überprüfen bestimmtes Feld

Vergleich der Daten auf dieser Seite und der Endreinigungsdaten der Tabelle etl2_socom_data

Website-Seitendaten


select * 
from etl2_socom_data 
where com_district is null and length(com_industry)-length(replace(com_industry,&#39;-&#39;,&#39;&#39;))=3
Nach dem Login kopieren
etl2_socom_data Tabellendaten

Die Reinigungsarbeiten sind abgeschlossen.
Wenn Sie während des Lernprozesses auf Probleme stoßen oder Lernressourcen erhalten möchten, können Sie gerne der Lernaustauschgruppe beitreten
626062078, lasst uns gemeinsam Python lernen!

Das obige ist der detaillierte Inhalt vonWie sollen Python-Crawler-Daten verarbeitet werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen 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