B 국 크롤 사격

B 국 크롤 사격

크롤링 사격 B 역 전에 일부 시간은 지금이 경험 기록

예비의

HTML 구문 분석

그림 삽입 설명 여기
그림 삽입 설명 여기
찾기 JSON 응답 파일 사격은 1,000 실시간 사격보다가 있다는 것을 발견, 위치
분석 매개 변수 :
그림 삽입 설명 여기
오직 기본 키의 영상 식별하는 OID
(우리가주의를 기울여야한다 그래서, 마스터까지 모든 비디오 횡령에 대해 생각했다 개혁 OID 크롤링 아래로 발견 ) 모든 OID를 가지고
각 동영상 URL을 고정 형식 참조 : HTTPS를 : //www.bilibili.com/video/av+vid
잡아에게 메인 인터페이스에서 모든 장해를, 모든 크롤링의 XPath의 OID
이 점을, 모든 OID 기어가 완료

다음 항목 코드는 사격, 분석 데이터를 가져

먼저 작은 시험으로, 개별 비디오 사격 테스트를 잡아 :

url="https://api.bilibili.com/x/v1/dm/list.so?oid=144896116"
headers={
        "User-Agent" : "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:72.0) Gecko/20100101 Firefox/72.0"
         }
# query_list={"oid":"144896116"}
response=requests.get(url,headers=headers)
html_str=response.content
html=etree.HTML(html_str)
d_list=html.xpath('//d')
content_list=[]

a=d_list[0].xpath('//text()')
items={}
items["danmu"]=a
content_list.append(items)
with open("blbl.txt","w",encoding="utf-8") as f:
    for content in content_list:
        f.write(json.dumps(content,ensure_ascii=False))
        f.write("\n")

아니나 다를까, 잡아 성공

그런 다음 데이터베이스에 저장, 사격, 해상도를 모두 잡아

import pymysql
import json
import io
import sys

con = pymysql.connect(

    host='127.0.0.1',

    port=3306,

    user='root',

    password='root',

    db='test',

    charset='utf8mb4'

)
cur = con.cursor()
cur.execute("insert into danmu(dm) value('测试')")
con.commit()
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='gb18030')
with open("danmu.json", "r", encoding="utf-8") as f:
    danmu_str = json.load(f)
    # print(danmu_str["dm"][0]["danmu"])
    j = 0
    for j in range(0, 1002):
        for item in danmu_str["dm"][j]["danmu"]:

            # sql_str="insert into danmu(dm) value( \""+item+"\")"

            for stuff in dirty_stuff:
                item = item.replace(stuff, "")
            print(item)
            length = item.__len__()
           
            for l in range(1, length - 1):
                if (item_list[0]==item_list[l]):
                    item=item_list[0]
            sql_str = "insert into danmu(dm) value( \"" + item + "\")"
            cur.execute(sql_str)
            con.commit()


그림 삽입 설명 여기
구문 분석 데이터, 공세 순위 :


select count(*) as count,dm as danmu
from danmu
group by dm
order by count desc;

최고의 결과 :
그림 삽입 설명 여기
나는 예상치 못한 결과의 장점을 순위, 체포 왕 Hanqing 100 만 연발했다, 어떤 아 0, F, 아, 아 ...

게시 73 개 원래 기사 · 원의 찬양 (20) · 전망 4395

추천

출처blog.csdn.net/lzl980111/article/details/104228861