En primer lugar, el análisis del contenido del sitio web
La página web que se arrastra a opgg, disponible en: " http://www.op.gg/champion/statistics "
Como puede verse a partir de la interfaz de web, detalla el lado derecho héroe al ejemplo Garen, el porcentaje de victorias del 53,84%, se seleccionó 16,99%, se utiliza una única ubicación
Ahora bien, el análisis de la página web de código fuente (botón derecho del ratón se puede encontrar en el menú para ver el código fuente de la página). Mediante la búsqueda de "53,84%" para localizar rápidamente la posición donde Garen
Como puede verse por el código, el nombre del héroe, y seleccionar las tasas de ganar son etiquetas td, y cada mensaje de un héroe etiqueta tr, td tr etiqueta es la etiqueta principal, tr etiqueta tbody es la etiqueta principal.
etiqueta tbody para encontrar
Hay cinco etiqueta etiqueta tbody (etiqueta de inicio final son tbody "tbody", de modo que un total de 10 "tbody"), el campo de análisis de contenido, son, campo de juego, solo, ADC, información auxiliar sola
Más que sólo esta parte del héroe como un ejemplo, tenemos que encontrar primero la pestaña tbody, a continuación, busque la etiqueta tr (cada etiqueta tr es un héroe de la información), y luego obtener más información de la sub-sello de la etiqueta td héroe
En segundo lugar, la operación de rastreo
El rastreo de contenido web -> extraer la información requerida -> Salida de datos héroe
getHTMLText (URL) -> fillHeroInformation (hlist, html) -> printHeroInformation (hlist)
getHTMLText contenido (URL) devuelve la función html en el enlace url
fillHeroInformation (hlist, html) es una función de la información deseada extraída lista html almacenado hlist
printHeroInformation (hlist) es la función de salida de información de la lista hlist héroe
En tercer lugar, la aplicación del código
1 función, getHTMLText (url)
1 def getHTMLText (url): # declaración informativa documento html 2 intento: 3 r = requests.get (url, timeout = 30) 4 r.raise_for_status () 5 r.encoding = r.apparent_encoding 6 retorno R.TEXT # contenido de retorno html 7, excepto: 8 retorno ""
función 2, fillHeroInformation (hlist, html)
En un ejemplo un tr etiqueta, tr etiqueta de la etiqueta td interior 7, la cuarta td etiqueta valor de atributo "Champion-index-table__name" div nombre de contenido tag Hero, la etiqueta td contenido quinta ganadora, el contenido de la etiqueta 6 td se selecciona la velocidad, esta información se almacena en la lista hlist
fillHeroInformation 1 def (hlist, html): # la lista héroe de información en hlist 2 sopa = BeautifulSoup (html, "html.parser") 3 para pa en soup.find (name = "tbody", attrs = "TabItem campeón de la tendencia-tier-TOP") los niños :. # hijo de desplazamiento etiquetas de la etiqueta tbody sola 4 si isinstance (tr, bs4.element.Tag): # tr se determina si el tipo de etiqueta, eliminar líneas en blanco 5 tds = tr ( 'td') # Find td tr etiqueta de la etiqueta bajo 6 heroname = tds [3] .find (attrs = "Champion-index-table__name"). String # 英雄 名 7 ratio de ganancias = tds [4] .string # ganar 8 pickRate = TDS [5] .string # seleccionar la velocidad 9 hlist.append ([heroname, ratio de ganancias, pickRate]) # información añadir a la lista de héroe hlist
3 función, printHeroInformation (hlist)
1 def printHeroInformation (hlist): Información # salida de lista hlist 2 print ( "{: ^ 20} \ t {: ^ 20} \ t {: ^ 20} \ t {: ^ 20}". Formato ( "nombre de héroe", "ganadora", "tasa de selección", "Posición ")) 3 para i in range (len (hlist)): 4 i = hlist [i] 5 print ( "{: ^ 20} \ t {: ^ 20} \ t {: ^ 20} \ t {: ^ 20}". Formato (i [0], i [1], i [2],"上 单 "))
4 función, main ()
dirección del sitio Web asignado a la URL, crear una nueva lista hlist, llame a la función getHTMLText (URL) para obtener la información del documento HTML, utilice fillHeroInformation (hlist, html) información de la función en la lista de héroe hlist, y luego usar printHeroInformation (hlist) salida de la función
1 def main (): 2 url = "http://www.op.gg/champion/statistics" 3 hList = [] 4 = html getHTMLText (url) # get html información del documento hlist 5 fillHeroInformation (hlist, html) # la información de lista héroe está escrito 6 printHeroInformation (hlist) de salida #
En cuarto lugar, los resultados demuestran
1, la información de la interfaz web
2, los resultados de rastreo
Cinco código completo
1 solicitudes de importación 2 import re 3 bs4 importación 4 de BS4 BeautifulSoup importación 5 6 def getHTMLText (url): # declaración informativa documento html 7 intento: 8 r = requests.get (url, timeout = 30) 9 r.raise_for_status () 10 r.encoding = r.apparent_encoding 11 de retorno R.TEXT # contenido de retorno html 12, excepto: 13 de retorno "" 14 fillHeroInformation 15 def (hlist, html): # la lista héroe de información en hlist 16 sopa = BeautifulSoup (html, "html.parser") 17 para pa en soup.find (name = "tbody", attrs = "TabItem campeón de la tendencia-tier-TOP") los niños :. # hijo de desplazamiento etiquetas de la etiqueta tbody sola 18 si isinstance (tr, bs4.element.Tag): # tr se determina si el tipo de etiqueta, eliminar líneas en blanco 19 tds = tr ( 'td') # Find td tr etiqueta de la etiqueta bajo 20 heroname = tds [3] .find (attrs = "Champion-index-table__name"). String # 英雄 名 21 ratio de ganancias = tds [4] .string # ganar 22 pickRate = TDS [5] .string # seleccionar la velocidad 23 hlist.append ([heroname, ratio de ganancias, pickRate]) # información añadir a la lista de héroe hlist 24 25 def printHeroInformation (hlist): Información # salida de lista hlist 26 de impresión ( "{: ^ 20} \ t {: ^ 20} \ t {: ^ 20} \ t {: ^ 20}". Formato ( "nombre de héroe", "ganadora", "tasa de selección", "Posición ")) 27 para i in range (len (hlist)): 28 i = hlist [i] 29 de impresión ( "{: ^ 20} \ t {: ^ 20} \ t {: ^ 20} \ t {: ^ 20}". Formato (i [0], i [1], i [2],"上 单 ")) 30 31 def main (): 32 url = "http://www.op.gg/champion/statistics" 33 hList = [] 34 html = getHTMLText (url) # get html información del documento hlist 35 fillHeroInformation (hlist, html) # la información de lista héroe está escrito 36 printHeroInformation (hlist) de salida # 37 38 main ()
Si necesita campo de juego rastreo, sola, ADC o información auxiliar, sólo es necesario modificar
fillHeroInformation (hlist, html) función en
tr en soup.find (name = "tbody", attrs = "TabItem campeón de la tendencia-tier-TOP"). declaración de los niños, modificar los valores de las propiedades attrs
" TabItem campeón de la tendencia-tier-jungle", " TabItem campeón de la tendencia-tier-MID "" TabItem campeón de la tendencia-tier-ADC "" TabItem campeón de la tendencia-tier-SUPPORT"等即可
En primer lugar, el análisis del contenido del sitio web
La página web que se arrastra a opgg, disponible en: " http://www.op.gg/champion/statistics "
Como puede verse a partir de la interfaz de web, detalla el lado derecho héroe al ejemplo Garen, el porcentaje de victorias del 53,84%, se seleccionó 16,99%, se utiliza una única ubicación
Ahora bien, el análisis de la página web de código fuente (botón derecho del ratón se puede encontrar en el menú para ver el código fuente de la página). Mediante la búsqueda de "53,84%" para localizar rápidamente la posición donde Garen
Como puede verse por el código, el nombre del héroe, y seleccionar las tasas de ganar son etiquetas td, y cada mensaje de un héroe etiqueta tr, td tr etiqueta es la etiqueta principal, tr etiqueta tbody es la etiqueta principal.
etiqueta tbody para encontrar
Hay cinco etiqueta etiqueta tbody (etiqueta de inicio final son tbody "tbody", de modo que un total de 10 "tbody"), el campo de análisis de contenido, son, campo de juego, solo, ADC, información auxiliar sola
Más que sólo esta parte del héroe como un ejemplo, tenemos que encontrar primero la pestaña tbody, a continuación, busque la etiqueta tr (cada etiqueta tr es un héroe de la información), y luego obtener más información de la sub-sello de la etiqueta td héroe
En segundo lugar, la operación de rastreo
El rastreo de contenido web -> extraer la información requerida -> Salida de datos héroe
getHTMLText (URL) -> fillHeroInformation (hlist, html) -> printHeroInformation (hlist)
getHTMLText contenido (URL) devuelve la función html en el enlace url
fillHeroInformation (hlist, html) es una función de la información deseada extraída lista html almacenado hlist
printHeroInformation (hlist) es la función de salida de información de la lista hlist héroe
En tercer lugar, la aplicación del código
1 función, getHTMLText (url)
1 def getHTMLText (url): # declaración informativa documento html 2 intento: 3 r = requests.get (url, timeout = 30) 4 r.raise_for_status () 5 r.encoding = r.apparent_encoding 6 retorno R.TEXT # contenido de retorno html 7, excepto: 8 retorno ""
función 2, fillHeroInformation (hlist, html)
En un ejemplo un tr etiqueta, tr etiqueta de la etiqueta td interior 7, la cuarta td etiqueta valor de atributo "Champion-index-table__name" div nombre de contenido tag Hero, la etiqueta td contenido quinta ganadora, el contenido de la etiqueta 6 td se selecciona la velocidad, esta información se almacena en la lista hlist
fillHeroInformation 1 def (hlist, html): # la lista héroe de información en hlist 2 sopa = BeautifulSoup (html, "html.parser") 3 para pa en soup.find (name = "tbody", attrs = "TabItem campeón de la tendencia-tier-TOP") los niños :. # hijo de desplazamiento etiquetas de la etiqueta tbody sola 4 si isinstance (tr, bs4.element.Tag): # tr se determina si el tipo de etiqueta, eliminar líneas en blanco 5 tds = tr ( 'td') # Find td tr etiqueta de la etiqueta bajo 6 heroname = tds [3] .find (attrs = "Champion-index-table__name"). String # 英雄 名 7 ratio de ganancias = tds [4] .string # ganar 8 pickRate = TDS [5] .string # seleccionar la velocidad 9 hlist.append ([heroname, ratio de ganancias, pickRate]) # información añadir a la lista de héroe hlist
3 función, printHeroInformation (hlist)
1 def printHeroInformation (hlist): Información # salida de lista hlist 2 print ( "{: ^ 20} \ t {: ^ 20} \ t {: ^ 20} \ t {: ^ 20}". Formato ( "nombre de héroe", "ganadora", "tasa de selección", "Posición ")) 3 para i in range (len (hlist)): 4 i = hlist [i] 5 print ( "{: ^ 20} \ t {: ^ 20} \ t {: ^ 20} \ t {: ^ 20}". Formato (i [0], i [1], i [2],"上 单 "))
4 función, main ()
dirección del sitio Web asignado a la URL, crear una nueva lista hlist, llame a la función getHTMLText (URL) para obtener la información del documento HTML, utilice fillHeroInformation (hlist, html) información de la función en la lista de héroe hlist, y luego usar printHeroInformation (hlist) salida de la función
1 def main (): 2 url = "http://www.op.gg/champion/statistics" 3 hList = [] 4 = html getHTMLText (url) # get html información del documento hlist 5 fillHeroInformation (hlist, html) # la información de lista héroe está escrito 6 printHeroInformation (hlist) de salida #
En cuarto lugar, los resultados demuestran
1, la información de la interfaz web
2, los resultados de rastreo
Cinco código completo
1 solicitudes de importación 2 import re 3 bs4 importación 4 de BS4 BeautifulSoup importación 5 6 def getHTMLText (url): # declaración informativa documento html 7 intento: 8 r = requests.get (url, timeout = 30) 9 r.raise_for_status () 10 r.encoding = r.apparent_encoding 11 de retorno R.TEXT # contenido de retorno html 12, excepto: 13 de retorno "" 14 fillHeroInformation 15 def (hlist, html): # la lista héroe de información en hlist 16 sopa = BeautifulSoup (html, "html.parser") 17 para pa en soup.find (name = "tbody", attrs = "TabItem campeón de la tendencia-tier-TOP") los niños :. # hijo de desplazamiento etiquetas de la etiqueta tbody sola 18 si isinstance (tr, bs4.element.Tag): # tr se determina si el tipo de etiqueta, eliminar líneas en blanco 19 tds = tr ( 'td') # Find td tr etiqueta de la etiqueta bajo 20 heroname = tds [3] .find (attrs = "Champion-index-table__name"). String # 英雄 名 21 ratio de ganancias = tds [4] .string # ganar 22 pickRate = TDS [5] .string # seleccionar la velocidad 23 hlist.append ([heroname, ratio de ganancias, pickRate]) # información añadir a la lista de héroe hlist 24 25 def printHeroInformation (hlist): Información # salida de lista hlist 26 de impresión ( "{: ^ 20} \ t {: ^ 20} \ t {: ^ 20} \ t {: ^ 20}". Formato ( "nombre de héroe", "ganadora", "tasa de selección", "Posición ")) 27 para i in range (len (hlist)): 28 i = hlist [i] 29 de impresión ( "{: ^ 20} \ t {: ^ 20} \ t {: ^ 20} \ t {: ^ 20}". Formato (i [0], i [1], i [2],"上 单 ")) 30 31 def main (): 32 url = "http://www.op.gg/champion/statistics" 33 hList = [] 34 html = getHTMLText (url) # get html información del documento hlist 35 fillHeroInformation (hlist, html) # la información de lista héroe está escrito 36 printHeroInformation (hlist) de salida # 37 38 main ()
Si necesita campo de juego rastreo, sola, ADC o información auxiliar, sólo es necesario modificar
fillHeroInformation (hlist, html) función en
tr en soup.find (name = "tbody", attrs = "TabItem campeón de la tendencia-tier-TOP"). declaración de los niños, modificar los valores de las propiedades attrs
" TabItem campeón de la tendencia-tier-jungle", " TabItem campeón de la tendencia-tier-MID "" TabItem campeón de la tendencia-tier-ADC "" TabItem campeón de la tendencia-tier-SUPPORT"等即可