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, 아, 아 ...