QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 3778|回复: 0
打印 上一主题 下一主题

Python-网页爬虫与Sqlite3

[复制链接]
字体大小: 正常 放大
檀俾九        

7

主题

3

听众

10

积分

升级  5.26%

该用户从未签到

自我介绍
我本名为我,那就是我
跳转到指定楼层
1#
发表于 2021-1-14 08:44 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
  1. #!/usr/bin/python
  2. % ]; I  d\" ?3 p, s# -*- coding: utf-8 -*-
  3. - o/ R( m# v% v5 i+ M
  4. % y  h' f  v: c$ z7 T9 Simport sqlite31 N! ~: @\" c3 M7 j& w; C; ~
  5. import requests
  6. + I5 k0 S0 E# X( L* q0 kfrom bs4 import BeautifulSoup
  7. 9 |4 t$ E\" j! ]7 G, T. p% efrom re import escape6 G: p& e) I6 j

  8. 9 b# [& M\" A; C2 \' W0 S& fif __name__ == '__main__':
  9. + j2 X1 {: S& Q    conn = sqlite3.connect('Python.db')% u; ]: s/ X! e, \' G
  10.     c = conn.cursor()
  11. 0 }6 m, K. Z6 Y    c.execute('''CREATE TABLE IF NOT EXISTS Python (
  12. & U. E7 ^3 a7 }& i# A4 x\" Y, L! c        Url VARCHAR,
  13.   `! ^' T$ u& G8 j/ c        Title VARCHAR,
  14. 2 U- M+ Y* G! l; w9 Z9 R        Author VARCHAR
  15. 8 D/ ?% n; B1 n/ ~6 ~- B    )''')6 i  E7 U: V7 j
  16.     conn.commit()7 j1 k1 f+ I4 P3 |

  17.   P/ R* u) ^& z  m4 P4 v    # --------------------Split Line--------------------
  18. $ Z6 Y$ K/ w+ O  Q; q$ N: ^    headers = {\" T+ {6 ]  f. h% F
  19.         "User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.87 Safari/537.36"
  20. ) |8 M/ }\" i2 E! @    }5 h& `2 y2 c4 V  {5 M! J( {0 W/ h
  21. ; f5 h% O7 k; J  r\" \& t* \
  22.     for i in range(1, 1046):& m5 ~* S2 J, L7 Z6 i
  23.         url = "http://xxx/index_%s.html" % str(i)( U, D, p- ], u9 b; T
  24.         req = requests.get(url=url, headers=headers)
  25. 8 D( E% B2 O$ R& s; X        req.encoding = "utf-8"- d7 _/ Y- m0 P: C% B' l9 K% F: r
  26.         html = BeautifulSoup(req.text, "lxml")7 {; E( q2 C; g0 \4 [. v1 _9 N
  27. . X7 B: s  V4 |7 S; m+ s4 G6 z
  28.         # --------------------Split Line--------------------
  29. + i7 ?, i& D, b8 `) Y! k        for div in html.find_all('div', class_='loop'):
  30. 9 B$ a8 c7 e# f+ y  b; M3 a            content_body = div.select('h2 > a')[0]* Z2 G' Y; K/ `3 c' E) e
  31.             content_infor = div.select('.content_infor > span:nth-child(3)')[0]
  32. : w8 P# `  _  o( X; `! M1 q9 e! P; [( j7 I$ Y% z
  33.             # --------------------Split Line--------------------) J  l4 w/ c9 T# i2 t) P, l7 m
  34.             cursor = c.execute(& N( o) ?\" k. r5 h# s) B
  35.                 "SELECT COUNT(*) FROM Python WHERE Url = '%s'" % ("http://xxx" + content_body.get('href'))). t( T2 X\" Z8 w3 P# T+ @8 M! m
  36.             len = 05 \7 \* }) I( }1 p
  37.             for row in cursor:& D% c3 t7 z# {  ?$ R  _0 y6 O
  38.                 len = row[0]
  39. ) R4 J$ G5 M0 x# S7 Q            if len > 0:9 |$ c% D- h8 f6 U
  40.                 continue/ E' ^% e\" i$ ^0 N/ J2 ]8 L
  41. 6 K0 @, M9 n; k3 H. F4 v' u
  42.             # --------------------Split Line--------------------% C- O, H: V' Y4 {0 m8 L, P
  43.             c.execute('INSERT INTO Python( Url, Title, Author) VALUES ( "%s", "%s", "%s")' % (9 z4 v! x* h8 {! d: q
  44.                 "http://xxx" + content_body.get('href'),% ]! x3 m* B* b* q) m; e3 l
  45.                 escape(content_body.get('title').replace("\"", "\"\"")),5 V3 J& s* q* C
  46.                 content_infor.text.replace('xxx: ', '')))
  47.   r2 w* n0 N2 R; N+ x& f$ q8 C4 E# ^0 V# H9 I
  48.         conn.commit()\" P3 g; @) L  D0 X, K+ K' l% t
  49.         print("第%s页" % str(i))  y5 i0 X! L/ U, M6 |) e8 o
  50. + w1 w, X$ J8 J\" M7 T6 A( `
  51.     # --------------------Split Line--------------------
  52. 9 F8 m' v3 _5 @4 X1 W: u% w    conn.close()8 v* N* f' I* j

! }3 Z. a/ Q) m% d5 ^- |6 i
8 k/ u; v& {3 I6 x2 r3 L
转发自派生社区
Python交流群:1047602540

2 [/ o( U' w5 S( [" B. G. S% p
zan
转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
您需要登录后才可以回帖 登录 | 注册地址

qq
收缩
  • 电话咨询

  • 04714969085
fastpost

关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

手机版|Archiver| |繁體中文 手机客户端  

蒙公网安备 15010502000194号

Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

GMT+8, 2026-4-18 12:54 , Processed in 0.420793 second(s), 49 queries .

回顶部