Ajax分析與爬取實戰

2022-09-19 22:51:15 字數 1923 閱讀 4786

乙個示例**,其鏈結為: ,改示例**的資料請求是通過ajax完成的,頁面內容是通過j**ascript渲染出來的,頁面載入如下圖所示:

如果我們直接通過requests.get(url)來獲取頁面,結果如下,可以發現返回內容並非是瀏覽器渲染的原始碼,說明我們看到的整個頁面都是由j**ascript和css檔案渲染得到的,瀏覽器執行了html引用的j**ascript檔案,j**ascript通過呼叫一些資料載入和頁面渲染方法,才最終呈現了完整頁面。

# -*- utf-8 -*-

"""@file:spa1_179.py

@description:

@author:echohye

@date:2022/01/31 20:08

"""import json

import pymysql

import requests

urls = [

f'api/movie/?limit=10&offset='

for page in range(10)

]# 獲取url對應原始碼

def craw(url):

r = requests.get(url)

return r.text

# 解析原始碼

def parse(html):

obj = json.loads(html)['results']

return obj

# 儲存資料

def s**e_data():

# 'id': 1,

# 'name': '霸王別姬',

# 'alias': 'farewell my concubine',

# 'cover': '',

# 'categories': ['劇情', '愛情'],

# 'published_at': '1993-07-26',

# 'minute': 171,

# 'score': 9.5,

# 'regions': ['中國內地', '中國香港']}

db = pymysql.connect(host='localhost', user='root', password='zhy123', port=3306, db='spiders')

cursor = db.cursor()

table_sql = "create table if not exists ajax_p179(id int not null,name varchar(255) not null,alias varchar(255),cover varchar(255)" \

",categories varchar(255), published_at varchar(255),minute varchar(255),score double,regions varchar(255))"

cursor.execute(table_sql)

for url in urls:

try:

for result in parse(craw(url)):

sql = "insert into ajax_p179(id,name,alias,cover,categories,published_at,minute,score,regions) " \

f"values(,\"\",\"\",'',\"\"," \

f"'','',,\"\")"

cursor.execute(sql)

db.commit()

except exception as e:

print(e.args)

db.rollback()

print("successful")

db.close()

if __name__ == '__main__':

s**e_data()

python利用Ajax分析方法爬取豆瓣劇情片排行

需要的庫 requests urllib.parse下的urlencode json csvtime 通過檢視network中的ajax請求的xhr檔案發現這條ajax請求包含的資訊如下 可以看到,包含了前20條電影的所有資訊 當再次向下滑動時,會出現新的xhr檔案 每個新的xhr檔案內包含了20條...

用Request爬取實戰

如果想要在請求的時候增加一些請求頭,用request.request。比如要增加乙個user agent 在拉勾網的職業資訊通過另外的 再通過js嵌入到主頁面的html 當中的 真正的職業資訊 在json.cn中解碼得 請求頁面,還有請求方式為post from urllib import requ...

關於python 爬取 ajax頁面

安裝只要按部就班的點next就好 conda的環境管理功能允許我們同時安裝若干不同版本的python,並能自由切換。對於上述安裝過程,假設我們採用的是python 2.7對應的安裝包,那麼python 2.7就是預設的環境 預設名字是root,注意這個root不是超級管理員的意思 假設我們需要安裝p...