乙個示例**,其鏈結為: ,改示例**的資料請求是通過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...