QQ登录

只需要一步,快速开始

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

Python-网页爬虫与Sqlite3

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

7

主题

3

听众

10

积分

升级  5.26%

该用户从未签到

自我介绍
我本名为我,那就是我
跳转到指定楼层
1#
发表于 2021-1-14 08:44 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
  1. #!/usr/bin/python$ G$ Y; a( I, ~9 J: U
  2. # -*- coding: utf-8 -*-$ m# n$ s- v+ w5 L$ R& v3 |( i

  3. 9 d0 Q, Z  o+ W; w# Uimport sqlite3
  4. + t% g\" y6 E* [5 b2 H* A, a4 Bimport requests  f/ f& n. Q* H$ b) M! W
  5. from bs4 import BeautifulSoup
  6. 8 W: m. R7 X1 o! L! L+ X* |  Kfrom re import escape
  7. . z8 I& X% `. U  O  `/ q' s
  8. 1 y/ N) o1 q9 K\" t# |5 Aif __name__ == '__main__':
  9. 4 f* P' s\" N3 a    conn = sqlite3.connect('Python.db')
  10. : y& y! ?+ }) G7 t7 y    c = conn.cursor()6 t3 m6 n4 u9 P
  11.     c.execute('''CREATE TABLE IF NOT EXISTS Python (
  12. 9 G/ n\" f# J\" H\" J- ^! a6 v& G        Url VARCHAR,8 z( E- P1 Y. {3 v5 ?. z
  13.         Title VARCHAR,: Q9 p2 S( ^) }/ a* G/ v. }
  14.         Author VARCHAR* e& m3 O# Y4 b& C; T! i6 [
  15.     )''')
  16. 0 h) H2 N& e1 W+ m$ z( O0 T. C\" ?    conn.commit()
  17. \" Y. @6 k3 K( c; @  g, Y. @* A7 J% x' z; F% T) I$ d\" U+ R
  18.     # --------------------Split Line--------------------6 H, j. p6 J: M. C& v
  19.     headers = {
  20. ! Z( g4 e6 j. P1 ^4 ^  C        "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. / w* I$ L6 M$ \; Q( b) ?! O6 h    }
  22. 5 A( o& q% h2 E7 \& I1 F0 }1 B! `4 E: J, b4 _
  23.     for i in range(1, 1046):
  24. * Q\" x5 K# C  Y        url = "http://xxx/index_%s.html" % str(i)
  25. $ ?5 h( P' C4 _7 G        req = requests.get(url=url, headers=headers)
  26. * M+ w6 h9 B  `( m& V0 D  e. L        req.encoding = "utf-8"
  27. 6 `+ m* e+ @# R7 H        html = BeautifulSoup(req.text, "lxml")
  28. : s, |0 }) H/ h* J% j' ?6 j
  29. 2 l' n# D\" g\" e' X: {        # --------------------Split Line--------------------  e\" n( s9 p9 C\" c& ~
  30.         for div in html.find_all('div', class_='loop'):
  31. 1 W/ j! Y, \\" b) Y3 H9 G9 l8 T7 C            content_body = div.select('h2 > a')[0]
  32. ! ?) r8 Q. J5 f: h7 @9 d3 A            content_infor = div.select('.content_infor > span:nth-child(3)')[0]. ]# }9 c6 k/ Z( m
  33. $ x\" O; B  p8 L+ E3 n* E
  34.             # --------------------Split Line--------------------
  35. + j4 M/ Q; Q- ?! \5 W( g) Y, R            cursor = c.execute(8 Q8 c\" f! T/ N+ W, \& S
  36.                 "SELECT COUNT(*) FROM Python WHERE Url = '%s'" % ("http://xxx" + content_body.get('href')))/ v  l4 ^4 P( M% m
  37.             len = 03 s: i. }# e) B* o' l# }0 D5 g
  38.             for row in cursor:2 K2 _0 J- g! S7 q
  39.                 len = row[0]' I. E' \: a4 P2 G% w; S
  40.             if len > 0:& O% Y$ U# `* N  p# i- a2 J* v
  41.                 continue
  42. \" d& A, f, k4 X: ?
  43.   E. G) w5 s( }. X5 y1 [4 D' V\" m            # --------------------Split Line--------------------
  44. * {# h! c8 x5 S4 f' W            c.execute('INSERT INTO Python( Url, Title, Author) VALUES ( "%s", "%s", "%s")' % (7 Y0 N( x1 P1 U
  45.                 "http://xxx" + content_body.get('href'),( j. X8 e\" R, F* A
  46.                 escape(content_body.get('title').replace("\"", "\"\"")),
  47. 0 V9 y9 s\" L8 n8 M  s& ~                content_infor.text.replace('xxx: ', '')))
  48. 4 ^( g- M0 c# q
  49. * B  ~2 u; V' P4 u        conn.commit()/ Z) I\" s8 \( e- G/ T
  50.         print("第%s页" % str(i))
  51. + _8 ]4 S! Q# ^( k
  52. 2 C2 j# g5 _! y1 k4 R3 ~0 n    # --------------------Split Line--------------------
  53. 1 x) S: r2 J9 \$ r0 o\" D    conn.close()0 J* u0 @! V8 ]
! s3 A* ~2 X: L+ k! b# h

/ X+ G# ^% C2 h2 X& P& R
转发自派生社区
Python交流群:1047602540

+ u0 ~* }' `1 h6 U( i2 [0 l6 b
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-21 00:51 , Processed in 0.414957 second(s), 50 queries .

回顶部