python:簡單爬蟲示例,含分析文件,建庫,程式程式碼
環境:ubantu18.04,mysql5.7,python3.6
1.分析文件
1.1 目標
爬取笑話集-最新兒童笑話大全前三頁的笑話題目,訪問量,發表時間
1.2 URL
第一頁:www.jokeji.cn/list7_1.htm
第三頁:www.jokeji.cn/list7_3.htm
第N頁:www.jokeji.cn/list7_N.htm
注:得出規律,並驗證
1.3 資料項
經分析,擬採用正則表示式獲取資料
題目:‘target="_blank" >(.?)’
發表時間:’(.?)’
每頁共有21條資料。
1.4 資料庫
mysql:test_database資料庫-jokejiChildren表(title varchar(128),visitNum int,pubDate date),SQL語句如下:
(1)create database test_database;
(2)use test_database;
(3)create user ‘lyx’ identified by ‘123lyx’;
(4)create table jokejiChildren(title varchar(128),visitNum int,pubDate date);
(5)grant select,delete, insert on test_database.jokejiChildren to ‘lyx’;
建庫建使用者sql參考:
2 程式程式碼 #encoding=utf-8 import urllib.request import re import pymysql conn = pymysql.connect(host=“127.0.0.1”,user=“root”,passwd=“123lyx”,db=“test_database”,charset=“utf8”)
for i in range(0,3):
url = ‘http://www.jokeji.cn/list7_’+str(i+1)+’.htm’
#res= urllib.request.urlopen(url).read().decode(‘utf-8’,‘ignore’)
res= urllib.request.urlopen(url).read()
if isinstance(res,str):
#res = res.encode(‘utf-8’,‘ignore’)
else:
res = res.decode(‘gb2312’,‘ignore’)
patTitile = ‘target="_blank" >(.?)’
patPubDate = '(.
3 執行結果 mysql> select title,pubdate from jokeChildren; ±--------------------------------------------------±-----------+ | title | pubdate | ±--------------------------------------------------±-----------+ | 熊孩子可是搞笑的花朵喲! | 2018-10-14 | | 把你氣個半死也笑個半死的是熊孩子 | 2018-10-09 | | 爆逗,小孩子讓你對笑沒有抵抗力 | 2018-09-29 | | 一波熊寶寶的冷幽默 | 2018-09-28 | | 小朋友把你妥妥的笑趴下 | 2018-09-25 | | 忍俊不禁,童萌最搞笑 | 2018-09-22 | …