python3 crawler Web développé le top100 réel oeil de chat

J'ai trouvé qu'il n'a pas utilisé pour synthétisent, et parfois après on apprendra, et trop paresseux pour trier, parfois il n'y a pas de temps, parfois penser parfois il écrirait. Mais plus tard à oublier est très rapide, et chercher des choses avant que le temps n'est pas toujours facile. Mais la vie, donnent toujours laisser quelque chose dans ce monde. se faire dans les choses d' apprentissage, les pensées sont enregistrés, dans cette loi un drapeau [tête], résumer et développer l'habitude d'écrire = - =.
Récemment développé combat CUI Qing regardait le web crawler de professeur rampant de top100 des yeux de chat python3 des informations sur le film. En général, l'étape de l' exploration en deux étapes, 1) un procédé utilisant un module de requête get demande les informations de la page Web, 2) l' utilisation d'expressions régulières pour correspondre les informations. Étape sans problème, mais pour des raisons de temps, http protocole au lieu du protocole https, mais peut aussi être utilisé lorsque le protocole est https, http demande , mais sautera à https demandes, mais cela a peu d' impact. Une autre est que si le champ est en- têtes sous forme de texte ensemble, le serveur sera l'œil du chat pour identifier les reptiles, la page qui est un centre de vérification de la mission des États - Unis.

1) Demande la page
texte des en - têtes uniquement mis en place un champ Agent-utilisateur, mais sera identifié comme les reptiles, de sorte que le meilleur de tous les champs d' en- tête de demande sont fixés, l'oeil de chat il ne reconnaît pas le navigateur et les reptiles. ne définissez pas le champ des cookies, parce que la demande n'est pas la première fois que le cookie.
Insérer ici l'image Description2) régulier extraction
extrait régulier la chose la plus importante est l'expression régulière.

<dd>.*?<a href="(.*?)" title="(.*?)".*?<p class="star">(.*?)</p>.*?<p class="releasetime">(.*?)</p>.*?</dd>

C'est je commence à écrire une expression régulière, est encore très immature, se sentant trop spécifique, plus que beaucoup d'informations inutiles, différentes informations que j'extrayaient de l'information et de la culture extrait, extrait seulement le href, le nom du film, mettant en vedette, Séances .

<dd>.*?board-index.*?>(.*?)</i>.*?data-src="(.*?)".*?name.*?a.*?>(.*?)</a>

Ceci est le texte d'une expression régulière, les expressions régulières d'écriture de principes que je comprends est d'abord l'information de trouver sur le dernier match face à l'ancre, puis de l'ancre pour correspondre à l'information que vous voulez.

<dd>.*?href="(.*?)" title="(.*?)".*?star.*?>(.*?)<.*?releasetim.*?>(.*?)<.*?</dd>

Cet article est écrit selon la méthode des expressions régulières

code section

import requests, re

main_url = 'https://maoyan.com/board/4'
films=[]

def getOnePage(url):
    headers = {'User-Agent':"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.97 Safari/537.36",
    'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
    'Accept-Encoding':'gzip, deflate, br',
    'Accept-Language':'zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2',
    'Cache-Control': 'no-cache',
    'Host':'maoyan.com',
    'Pragma':'no-cache',
    'Connection':'keep-alive',
    'Upgrade-Insecure-Requests':'1'
    }
    respond = requests.get(url, headers=headers)
    pattern ='<dd>.*?href="(.*?)" title="(.*?)".*?star.*?>(.*?)<.*?releasetim.*?>(.*?)<.*?</dd>'
    result = re.findall(pattern, respond.text, re.S)
    print(result)
    films.extend(result)

def main():
    all_url=[]
    all_url.append(main_url)
    for i in range(10,100,10):
        tmp = main_url+'/?offset='+str(i)
        all_url.append(tmp)
    for u in all_url:
        getOnePage(u)
    
    # print(films[20])
    with open('maoyan.txt','w') as f:
        line =''
        for i in range(100):
            # print(films[i])
            line_list= list(films[i])
            line_list[2] = line_list[2].strip()
            line = '         '.join(line_list)+'\n'
            f.write(line)

main()

Publié 15 articles originaux · a gagné les éloges 3 · vues 10000 +

Je suppose que tu aimes

Origine blog.csdn.net/biziwaiwai/article/details/104324642
conseillé
Classement