QQ登录

只需要一步,快速开始

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

Python-网页爬虫与Sqlite3

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

7

主题

3

听众

10

积分

升级  5.26%

该用户从未签到

自我介绍
我本名为我,那就是我
跳转到指定楼层
1#
发表于 2021-1-14 08:44 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
  1. #!/usr/bin/python
  2. / P\" V) O7 b3 D- B4 X# -*- coding: utf-8 -*-
  3. ! D+ H+ C: H* f( e  g; e: I! K
  4. ( s( C, O1 `( u& p# s  Mimport sqlite3
  5. ! i/ M, T# j0 H* Eimport requests7 _7 d6 i9 W' m2 u  C
  6. from bs4 import BeautifulSoup4 c$ G) @; b3 {& S2 @. }. c
  7. from re import escape( G0 ~8 P1 }* d, D4 P( k
  8. : d7 u- g+ z; R8 y8 o( k
  9. if __name__ == '__main__':
  10. * l# f) Z\" k6 k8 j    conn = sqlite3.connect('Python.db')& d4 ^3 i5 \/ P# G( Y
  11.     c = conn.cursor()# T' W# Q9 q; ~# x& C/ b
  12.     c.execute('''CREATE TABLE IF NOT EXISTS Python (' X) G6 g  g2 j3 p5 t2 H  S& F\" {
  13.         Url VARCHAR,; T, E* q9 N1 I8 U: o* K
  14.         Title VARCHAR,- a$ Y4 ?4 W\" Q7 c9 X# R0 G
  15.         Author VARCHAR
  16. ) g\" r4 Q: |& I% h2 H( A5 ?; T    )''')
  17. 3 ^: ?7 g6 b  S, e' Q& I    conn.commit()
  18. 6 r% U# C  T. m4 r( x4 {/ S- s* s2 w5 O3 t
  19.     # --------------------Split Line--------------------# T  l) `  t6 J) t. S5 i$ V
  20.     headers = {7 }7 S# W) X2 h\" b+ `0 Q
  21.         "User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.87 Safari/537.36") ]9 E/ c8 d/ F\" G7 J
  22.     }  J9 U3 x% U0 k8 `2 B6 v  X
  23. : n& M2 p9 t4 P& |0 G7 Y
  24.     for i in range(1, 1046):
  25. ; p4 n9 ~1 ?% l# H        url = "http://xxx/index_%s.html" % str(i)
  26. 5 f: Y4 h8 k\" F  E% E3 d        req = requests.get(url=url, headers=headers)/ a7 x* w3 j) B0 E& ?
  27.         req.encoding = "utf-8"
  28. 7 @0 F/ [3 T) p        html = BeautifulSoup(req.text, "lxml")
  29. 1 L/ |2 n! b0 y) H  V7 W3 x
  30. + D7 Z8 W4 a\" w$ C& ]# C        # --------------------Split Line--------------------
  31. 6 o% S: A5 v7 b/ j4 ?; M% Y        for div in html.find_all('div', class_='loop'):
  32. ( R4 q' V& `1 t            content_body = div.select('h2 > a')[0]& O2 ^/ i8 L+ Q* Y5 i
  33.             content_infor = div.select('.content_infor > span:nth-child(3)')[0]\" f# a9 i/ P. }7 H( F

  34. 5 K% L& Q9 H2 J* t, a            # --------------------Split Line--------------------
  35.   Q7 E% G5 I1 K! V: O            cursor = c.execute(  L$ P4 r) I& d7 a5 i2 n
  36.                 "SELECT COUNT(*) FROM Python WHERE Url = '%s'" % ("http://xxx" + content_body.get('href')))+ X9 t* ?0 K  x: g  H0 D
  37.             len = 0
  38. 0 V; F- r0 [1 o: m! x: l% |2 G+ C            for row in cursor:3 `& X- e: L! e
  39.                 len = row[0]+ {8 f4 R5 O, g
  40.             if len > 0:\" d1 b* h) C* m$ `\" t5 L1 i6 o' k, S: ]
  41.                 continue
  42. 3 Q( `: {6 N+ Q' {2 A1 o' ?; D( ^( G  ^
  43.             # --------------------Split Line--------------------5 G1 l$ c2 s( O4 Y0 `, G7 T2 e
  44.             c.execute('INSERT INTO Python( Url, Title, Author) VALUES ( "%s", "%s", "%s")' % (
  45. # E9 r- T\" M1 s9 L* d. U                "http://xxx" + content_body.get('href'),9 Y# F& \! a% G/ |
  46.                 escape(content_body.get('title').replace("\"", "\"\"")),
  47. ) @! G1 j9 E8 p5 ]) N                content_infor.text.replace('xxx: ', '')))
  48. 8 w6 K1 f8 X/ P8 o6 O: a1 F5 Y9 m) b# T1 B- P* R8 E
  49.         conn.commit()9 }' ?\" I# b# V* p& a0 A3 O$ z5 u
  50.         print("第%s页" % str(i))
  51. 3 v\" O6 J3 q  v$ I3 Z. N7 o# D, d* X) ^
  52.     # --------------------Split Line--------------------9 q+ M( R9 @4 [\" [1 z
  53.     conn.close()8 O, T! j& k$ S. |! ^5 z; V
5 g0 T' H. \* L0 q+ ]7 z

5 X4 G/ {% {" {) H
转发自派生社区
Python交流群:1047602540

; i" m" X) w+ Y2 L7 V
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-6-3 01:09 , Processed in 0.307351 second(s), 50 queries .

回顶部