QQ登录

只需要一步,快速开始

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

Python-网页爬虫与Sqlite3

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

7

主题

3

听众

10

积分

升级  5.26%

该用户从未签到

自我介绍
我本名为我,那就是我
跳转到指定楼层
1#
发表于 2021-1-14 08:44 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
  1. #!/usr/bin/python, d. Y& l, a0 k  A; a8 u; P
  2. # -*- coding: utf-8 -*-* U4 \. E! B\" q/ v$ p\" l
  3. # X. L* j, I  a  k9 b\" w/ k3 R
  4. import sqlite3
  5. . Q5 |+ n% @/ K\" D& o& Vimport requests- _8 o3 h+ m! r+ V
  6. from bs4 import BeautifulSoup7 V$ x- _! O' a3 h
  7. from re import escape
  8. 4 L7 @' Q7 F8 _7 w9 B: t# D
  9. 7 B\" H; L  Z6 vif __name__ == '__main__':
  10. ) T2 ~, @* k: m! J- N  Q\" I    conn = sqlite3.connect('Python.db')1 S) N2 d7 p  j# n. {, C& L% D0 u% i
  11.     c = conn.cursor()9 j8 M! A5 ]8 j7 f! C- l
  12.     c.execute('''CREATE TABLE IF NOT EXISTS Python (
  13. 7 T/ w* j, [3 T        Url VARCHAR,
  14. ' O( s- [, Y% J& ^        Title VARCHAR,
  15. . x0 a6 Q9 M% i        Author VARCHAR
  16. 0 q0 c# A  p. I5 M    )''')+ f: h\" p6 G& y9 p
  17.     conn.commit()
  18.   ?4 u7 v: X( b3 q
  19. : a, W* e( q, b3 u0 F: L    # --------------------Split Line--------------------
  20. . h1 K; \- E! z) n/ E( a7 x    headers = {
  21. 5 c0 O# q2 U& ]* X, e        "User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.87 Safari/537.36"/ a- T, s/ g# y8 `5 Y% O( o
  22.     }
  23. ' c8 v0 R' j7 |& G
  24. + e0 k7 H) r. |2 c9 P. q0 a\" @. y    for i in range(1, 1046):0 m$ }\" U( @  a+ y- T0 K2 L1 {+ W+ i
  25.         url = "http://xxx/index_%s.html" % str(i)
  26. + n  K, k6 ?& [        req = requests.get(url=url, headers=headers)
  27. . N( ]. `8 j; O: Z3 e8 h& ?1 _\" ]        req.encoding = "utf-8"
  28. 4 g* ]# a' o\" s1 G; v. m        html = BeautifulSoup(req.text, "lxml")) v% G& B  E9 ^& B

  29. ! B* P1 |* i: I( f* ?        # --------------------Split Line--------------------' i. M: s2 c; I9 d% h
  30.         for div in html.find_all('div', class_='loop'):9 v0 N# t$ G9 ?
  31.             content_body = div.select('h2 > a')[0]& p4 K3 S' t7 j2 ^0 E& \
  32.             content_infor = div.select('.content_infor > span:nth-child(3)')[0]
  33. : z4 ~9 b2 {, ]  n* t2 w# w' O3 E  W\" s4 i& C. W
  34.             # --------------------Split Line--------------------0 r) O. L- H: ?7 }7 T. K
  35.             cursor = c.execute(
  36. - @1 C7 `9 t# o6 o$ n1 C( }1 U: M                "SELECT COUNT(*) FROM Python WHERE Url = '%s'" % ("http://xxx" + content_body.get('href')))
  37. : M' H: N% u5 S$ r3 H* T# n, }' s% u            len = 09 K( d2 b: e9 z7 P8 |# D. ?. f
  38.             for row in cursor:
  39.   R1 K7 E  m6 ]/ C1 Y                len = row[0], d6 r. R1 u8 Q) }
  40.             if len > 0:( H$ a8 ^9 W  \& j2 @6 e\" |
  41.                 continue
  42. 5 {: ?1 ?0 I+ w+ d, l! Q
  43. * K+ X, J( I) z: B+ a' h            # --------------------Split Line--------------------5 @  |% ?0 p( ?  j- y; C
  44.             c.execute('INSERT INTO Python( Url, Title, Author) VALUES ( "%s", "%s", "%s")' % ($ X+ J/ g6 X) D* [1 Q
  45.                 "http://xxx" + content_body.get('href'),
  46. 1 ?$ T/ A! M7 j- F: Q+ i& j( {                escape(content_body.get('title').replace("\"", "\"\"")),
  47. ( v& z+ p+ y; K                content_infor.text.replace('xxx: ', '')))
  48. ' q1 S8 l6 f. @0 T4 C- Z8 s  a( w, J! q9 _* u
  49.         conn.commit()
  50. / g3 v! \+ ]& q' N7 y        print("第%s页" % str(i))
  51. 5 p8 U: ?' u' M, t( o' _, _
  52. 6 y! M) H! E1 {) ?1 p    # --------------------Split Line--------------------
  53. \" c, Z4 n. J5 `    conn.close(): N% z% \( l1 f4 W

/ x, B. w2 M8 i3 w' ?4 G, v
( ]6 I9 v2 W3 p
转发自派生社区
Python交流群:1047602540
" _6 ]0 _5 l* D, Q) K1 V% S4 e
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 06:48 , Processed in 0.292870 second(s), 50 queries .

回顶部