今日トライ小さな動画サイトの動画をクロールする(もちろん、誰もがその小さなビデオを望んでいる):www.vmovier.com
直接ラインテストでのXPathの一致を使用してページへのリンクは直接的な方法は、完全にすべてのビデオリンクと一致していませ登るために動作しませんので、サイトが遅延ロード技術を使用していることを見つけたことを開始した後、
だから私はそれがインタフェースをロードつかん:https://www.vmovier.com/post/getbytab?tab=new&page=3&pagepart=1
ページパラメータはページ数である場合、pagepartのパラメータは、各ページの負荷は、各ページがテストされ、あなたが達成するためにループを使用することができ、3つのは、ロードされた見つかった回数です
= INTページ(INPUT(「あなたがクロールするページの番号を入力してください:」)) #インタフェースにデータを送信するために動的ページのキャプチャインターフェイスであるため、キャプチャインターフェイスが引き継ぐ #最初の数pagepartあたりのページ=ページ= 3つのリフレッシュリフレッシュは、各ページがある123がループ書くことができます のための T における範囲(1、4 ): URL = " https://www.vmovier.com/post/getbytab?tab=new&page=% S&pagepart = D%"%(ページ、T) #の印刷(URL) #の終了()
そして、この論文の主な問題は、インタフェースがJSONデータ形式を返すことが言われていることですが、私はそれがオープンな標準JSON形式ではありません見つけます。
ここで私は強く、このプログラマのインタフェースの開発を非難、私は他のソリューションを探すために長い時間を費やし
この1の下には、私はフィルタリングしたいものです。
辞書を考えるようになったことは、データの一部を取得することで、HTML形式、フィルタのタイトルと私は必要なビデオリンクへの使用のXPathに変換ではなく、仕事を見つけた、と最終的に私は、マッチングの定期的な方法を使用することを選択した定期的なZhendiを言わなければなりません強いです:
import requests from bs4 import BeautifulSoup import time from lxml import etree import re import json #添加头部 作为全局 headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36' } url = "https://www.vmovier.com/post/getbytab?tab=new&page=3&pagepart=1" r = requests.get(url=url,headers=headers) #print(r.text) obj = json.loads(r.text) # print(obj) # exit() #取出所有和视频相关的数据 标题和url data是一个列表 里面存放的都是字典 data = obj['data'] #print(data) # # exit() # tree = etree.HTML(data) # title = tree.xpath('//div[@class ="index-more"]') # print(title) match_obj_url = re.compile(r'<a href="(.*)" title=".*全文" target="_blank">阅读全文...</a>') url = re.findall(match_obj_url,data) print(url) match_obj_title = re.compile(r'<a href=".*" title="(.*)全文" target="_blank">阅读全文...</a>') title = re.findall(match_obj_title,data) print(title) exit()
费了2个多小时的时间,可算搞出来了后面获得这个url还不是最终视频的url 竟然还有个跳转 真是块难啃的骨头,但是应该问题不大,先记录一下这个问题,以后遇到再看看 不管开发人员多么狡猾 我都要攻克你们