QQ登录

只需要一步,快速开始

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

Python-网页爬虫与Sqlite3

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

7

主题

3

听众

10

积分

升级  5.26%

该用户从未签到

自我介绍
我本名为我,那就是我
跳转到指定楼层
1#
发表于 2021-1-14 08:44 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
  1. #!/usr/bin/python# }+ H7 G7 n: N( c2 e
  2. # -*- coding: utf-8 -*-1 ?. D, r+ ]* h

  3. 5 s/ O$ G( [4 y* U1 P0 t1 x, Gimport sqlite32 s9 @6 e+ `- J7 [7 R4 }3 e, |& a
  4. import requests' `7 g1 P: R. s( D
  5. from bs4 import BeautifulSoup
  6. ) q. }6 n; D0 {* s. l4 R1 q* U6 Z0 u- sfrom re import escape
  7. : h0 u& Q6 y' S# `
  8. ' r$ ~' L$ V0 {/ n- \4 Eif __name__ == '__main__':
  9. % o% t\" r. G\" Z. \: j& B# l    conn = sqlite3.connect('Python.db')! |9 l' b/ y0 @
  10.     c = conn.cursor()
  11. 0 b) _' m1 o6 b& g5 t    c.execute('''CREATE TABLE IF NOT EXISTS Python (! R\" }4 s8 g+ Z3 Z3 }! J) b) V3 T, M
  12.         Url VARCHAR,
  13. ! ^* ?4 V' M* d5 p        Title VARCHAR,% x  h( E) ~4 Z  Z/ \7 E
  14.         Author VARCHAR
  15. 6 N\" X& P\" ^& v) K; `( l    )''')
  16.   B5 i& \/ N# d    conn.commit()4 |. Y8 w, q3 Q; D- m9 K
  17. * Y4 z+ l2 X: o$ Q
  18.     # --------------------Split Line--------------------/ \  ^8 I( b) j; o' C
  19.     headers = {
  20. 2 j; a1 b) u5 C' y% `0 u        "User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.87 Safari/537.36"
  21. \" G( [\" q  N2 t' Y# q9 C' b/ y    }
  22.   x6 O( |) {* J5 [* K) `' H1 d; J; J. s/ X. y+ B2 V; Q! E
  23.     for i in range(1, 1046):
  24. / M* ]4 A- ^: o/ |: |. @. A) J        url = "http://xxx/index_%s.html" % str(i)$ a7 h' J$ I5 `( H. Y
  25.         req = requests.get(url=url, headers=headers)# B! c7 `- }2 e/ C9 o, t- I
  26.         req.encoding = "utf-8"
  27. & O! a( ]* Y\" X        html = BeautifulSoup(req.text, "lxml"). l* V  s1 o4 P4 G

  28. % {9 u5 Z+ H) p+ [9 R& _# y        # --------------------Split Line--------------------
  29. 7 o+ Z( k* B4 Q, b. l$ Z1 h8 B* F        for div in html.find_all('div', class_='loop'):5 [. b$ z7 Z2 h* t4 ^1 q2 y/ w4 K
  30.             content_body = div.select('h2 > a')[0]8 \* V7 w3 [& R- Y\" H2 f* I9 h
  31.             content_infor = div.select('.content_infor > span:nth-child(3)')[0]
  32. 3 D\" K+ W  Z  R+ ?+ j& |4 D
  33. 4 b2 Y( R/ Z$ v, S3 n. q0 \            # --------------------Split Line--------------------% C) T! ^; w! G; y* h/ c/ V  `
  34.             cursor = c.execute(
  35. 3 f* K% ]0 e! M) ^                "SELECT COUNT(*) FROM Python WHERE Url = '%s'" % ("http://xxx" + content_body.get('href')))
  36. ( y1 q( Y& e* C+ ?            len = 0: ^9 l$ _, C9 D( m# Z' j% |
  37.             for row in cursor:
  38. 8 J* {) [8 K7 i* X1 I                len = row[0]
  39. % t- U5 N4 H3 `$ y* t. r            if len > 0:
  40. ; T( q7 q+ h\" j; ~* i% M. e/ \+ Q                continue3 K  z$ [. M) ?  C; q

  41. 5 x, b* e\" Y8 l7 l            # --------------------Split Line--------------------1 e+ x- `' m; }% K
  42.             c.execute('INSERT INTO Python( Url, Title, Author) VALUES ( "%s", "%s", "%s")' % (
  43. & T- p3 V0 o9 q' n7 F' q                "http://xxx" + content_body.get('href'),% g6 E2 l+ Z) A4 C
  44.                 escape(content_body.get('title').replace("\"", "\"\"")),
  45. ) s6 S% J8 k; @, d7 ]$ L1 L( c8 P                content_infor.text.replace('xxx: ', '')))' I( I: V0 \# `6 f# a7 p
  46. ! C) h  J: n5 u& R
  47.         conn.commit()
  48. ! H0 \; S9 y) g0 i% Z        print("第%s页" % str(i))
  49. 7 P! O. f4 Y# l2 H; X8 }
  50. ! D! v7 ]) Q/ h5 M; f    # --------------------Split Line--------------------% h' ]/ A6 J* P  x; B2 f
  51.     conn.close()
  52. * ]- K$ k( _6 t# ~: ]

' L  _2 x; b0 `0 z9 x1 ^/ }$ ~$ D0 x1 ]4 W7 h
转发自派生社区
Python交流群:1047602540

. n$ N" K0 k4 I  m) U
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, 2025-8-19 14:32 , Processed in 0.527394 second(s), 49 queries .

回顶部