Python- Rastreador de rastreo

Python- Rastreador de rastreo

En mi trabajo diario, existen infinitas demandas de rastreo de datos, y Python me ayuda a manejarlo.

Requisito 1: rastreo de una determinada puntuación de la aplicación

Módulos relacionados:

1. Solicitudes: envíe solicitudes http para obtener el código fuente de la página html

2. re: recorta los campos de datos obligatorios mediante expresiones regulares

Código:

url = 'http://app.flyme.cn/games/public/detail?package_name=xxxxx'
ret = requests.get(url)
tmp_str = re.findall(r'魅友评分:</span>\r\n.*star_bg" data-num="\d+"', ret.text)
rate = re.findall(r'\d+', tmp_str[0])
rate_value = int(rate[0])/10

Requisito 2: Revisiones de rastreo de una APLICACIÓN

Dificultad: Los datos de los comentarios son a menudo contenido dinámico realizado a través de JS. Los datos requeridos no están en el código fuente html. Utilice el módulo Red en la herramienta de desarrollo para rastrear la fuente y analizar la interfaz de adquisición de comentarios. Por ejemplo, los datos de los comentarios de Huawei se pueden analizar y obtener en el sitio web oficial de la AppStore con la siguiente interfaz https://appgallery.cloud.huawei.com/uowap/index?method=internal.user.commenList3&serviceType=13&reqPageNum=1&maxResults=5&appid=C101886617&locale=zh_CN&LOCALE_NAME=zh_CN&version=10.0.0.

Módulos relacionados:

1. Solicitudes: envíe una solicitud http para obtener el valor de retorno del comentario.

2. json: analiza los datos devueltos en formato json

Código:

url = "https://appgallery.cloud.huawei.com/uowap/index?method=internal.user.commenList3&serviceType=13&reqPageNum=%d&maxResults=5&appid=C101886617&locale=zh_CN&LOCALE_NAME=zh_CN&version=10.0.0" % (i)
review_json = requests.get(url).text
review_text = json.loads(review_json)
review_entry = review_text['list']
for review in review_entry:
  version = review['versionName']
  title = review['title']
  comment = review['commentInfo']
  rate = float(review['rating'])
  review_id = review['id']
  opertime = review['operTime']

Requisito 3: rastreo de una determinada página de contenido del sitio web

Dificultad: si no hay datos estáticos y no se puede rastrear una interfaz de datos hasta la fuente, entonces debe ser un gran asesino. El cromo sin cabeza es la forma de cromo sin interfaz. Se puede utilizar junto con el selenio para simular varias operaciones de clic del navegador y obtener el código fuente html obtenido después del cálculo dinámico.

Módulos relacionados:

1. Selenio: utilizado junto con Chrome sin cabeza, puede simular varias operaciones de clic del navegador y obtener el código fuente html obtenido después del cálculo dinámico.

2. bs4: BeautifulSoup, utilizado para analizar etiquetas html

3. re: recorta los campos de datos obligatorios mediante expresiones regulares

Código:

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from bs4 import BeautifulSoup
import re
import os

"""
# 模拟点击的方式汇总
# 1. 标签名及id属性值组合定位
driver.find_element_by_css_selector("input#kw")
# 2.  标签名及class属性值组合定位
driver.find_element_by_css_selector("input.s_ipt")
# 3. 标签名及属性(含属性值)组合定位
driver.find_element_by_css_selector("input[name="wd"]")
# 4. 标签及属性名组合定位
driver.find_element_by_css_selector("input[name]")
# 5. 多个属性组合定位
driver.find_element_by_css_selector("[class="s_ipt"][name="wd"]")
"""

url = "https://zz.hnzwfw.gov.cn/zzzw/item/deptInfo.do?deptUnid=001003008002030&deptName=" + \
            "%E5%B8%82%E5%8D%AB%E7%94%9F%E5%81%A5%E5%BA%B7%E5%A7%94%E5%91%98%E4%BC%9A&areaCode=410100000000#sxqdL"

# 第一步、初始化
chrome_options = Options()
chrome_options.add_argument('--headless')
driver = webdriver.Chrome(options=chrome_options)
driver.set_window_size(1024, 7680)

# 第二步、打开网页
driver.get(url)

cnt = 11 # 共11页
bianhao = 1
while cnt > 0:
    # 第三步、解析内容
    soup = BeautifulSoup(driver.page_source,"html.parser")
    item_list = soup.find('ul', id='deptItemList')
    span_list = item_list.findAll('span')
    for i in span_list:
        print(str(bianhao) + ". " + i.string.split('.')[1])
        bianhao += 1
    cnt -= 1
    if cnt == 0:
        break
    # 第四步、翻页(模拟点击下一页)
    driver.find_element_by_css_selector('a.laypage_next').click()



Documentos de referencia

1. Explicación detallada del módulo de solicitudes de Python

2. Expresiones regulares de Python

3. Primeros pasos basados ​​en el modo sin cabeza Python + Selenium + Chrome

4. Python3 no pudo abrir Chrome usando selenium + webdriver y reportó un error: No existe tal archivo o directorio: 'chromedriver': 'chromedriver'

5. Tutorial súper detallado sobre el uso de la biblioteca Beautiful Soup en Python

6. Varios métodos de Selenium four find_element_by_css_selector ()

Supongo que te gusta

Origin blog.csdn.net/ManWZD/article/details/108710978
Recomendado
Clasificación