日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python爬取周杰伦歌词_Python 爬取周杰伦 instagram

發布時間:2023/12/20 python 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python爬取周杰伦歌词_Python 爬取周杰伦 instagram 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

整體框架

使用國內能訪問的某國外 app angine 爬取Jay的 Instagram 并顯示,再使用國內的 sae 訪問這個網站,再爬取一次并發送到微博小號。

bs4

使用requests爬取 Instagram 時候,并沒有加request header,Instagram 對 robot 還算友好,直接返回不帶 js 的網頁信息。通過bs4迅速定位到照片、視頻信息,再用正則表達式提取到鏈接并下載、顯示。,正則表達式讓人頭痛,使用str.split(' ')來使字符串變成列表。

from bs4 import BeautifulSoup

filepath = 'C:\Users\hndx\Desktop\ins.html'

soup = BeautifulSoup(open(filepath),'lxml')

script = soup.select('script')

print str(script[2]).split('},{"node":')[1]

通過分析ins.html,得到每個node就是一個動態。這樣str(script[2]).split('},{"node":')[1]就是帶有Jay最新動態信息的 Unicode 字符了。應用json 直接將這個信息轉化成字典dict,如下

import json

i = json.loads(info)

print i["edge_media_to_caption"]['edges']

"""

[{u'node': {u'text': u'Just finished now \u8b1d\u8b1d\u91d1\u83ef\u7684\u670b\u53cb\u5011 high\u7684\u4e0d\u8981\u4e0d\u8981\u7684 #\u91d1\u83ef #\u96d9\u7bc0\u68cd#\u96d9\u622a\u68cd'}}]

"""

保存圖片

import requests

s = requests.session()

ss = s.get('https://www.baidu.com/img/bd_logo1.png')

open('logo.png', 'wb').write(ss.content)

數據庫 ORM Flask-SQLAlchemy

class photo(db.Model):

__tablename__ = "photoid"

id = db.Column(db.Integer) #參數 primary_key=True 表示此鍵值不能重復,必須有一個primary_key=True。

url = db.Column(db.String(4096),primary_key=True )

text = db.Column(db.String(4096))

def __init__(self, id, url,text):

self.id = id

self.url = url

self.text = text #這里有三個行

關于創建、查找

In [1]: import flask_app

In [2]: con = ['1','2']

In [3]: flask_app.photo(con[0],con[1])

Out[3]:

In [4]: flask_app.db.session.add(flask_app.photo(con[0],con[1]))

In [5]: flask_app.db.session.commit()

In [6]: flask_app.photo.query.filter_by(id='1').first()

Out[6]:

In [7]: p1 =flask_app.photo.query.filter_by(id='1').first()

In [8]: p1.id

Out[8]: 1

In [9]: p1.url

Out[9]: u'2'

Mysql 用到的語句

DROP TABLE table_name ;

刪除數據表

insta.py

# -*- coding: utf-8 -*-

"""

insta 爬蟲

Created on Fri May 04 09:02:26 2018

@author: aubucuo

"""

import requests

from json import loads

from bs4 import BeautifulSoup

import re

s = requests.session()

u = 'https://www.instagram.com/jaychou/'

def ins(pid):

rt = []

c1 = s.get(u)

soup = BeautifulSoup(c1.content,'lxml')

script = soup.select('script')

ls = script[2].contents

ls1 = re.findall('window._sharedData = (.+?);', str(ls[0]))

js = loads(ls1[0])['entry_data']['ProfilePage'][0]['graphql']['user']['edge_owner_to_timeline_media']['edges']

j_id = js[0]['node']['id']

is_video =js[0]['node']['is_video']

j_url = js[0]['node']['display_url']

j_text = js[0]['node']['edge_media_to_caption']['edges'][0]['node']['text']

if j_id!= pid and not is_video: #如果id 不重復 且不是video

rt.append(True)

rt.append(j_id)

rt.append(j_url)

rt.append(j_text)

c2 = s.get(j_url)

open('mysite/static/jay.jpg', 'wb').write(c2.content)

return rt

else :

rt.append(False)

return rt

其中pid是上次執行時候最新一張圖片的id,用來判斷是否有更新。其實這里bs4對我的幫助并不大。上面程序只做到了保存最新的一張圖片(jay.jpg),實測中,總是保存第二張圖片,可能是正則表達式的問題。不影響功能,不再深究了。

使用 json 精準定位N次,(注意到js變量)

總結

以上是生活随笔為你收集整理的python爬取周杰伦歌词_Python 爬取周杰伦 instagram的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。