QQ登录

只需要一步,快速开始

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

Python-网页爬虫与Sqlite3

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

7

主题

3

听众

10

积分

升级  5.26%

该用户从未签到

自我介绍
我本名为我,那就是我
跳转到指定楼层
1#
发表于 2021-1-14 08:44 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
  1. #!/usr/bin/python
  2. ) t2 L- U$ P  u9 E% M( s4 g7 j# -*- coding: utf-8 -*-\" Y8 Y0 G% {* R

  3. ) k$ k\" I4 i, @! p' U2 p- Pimport sqlite3
  4. 4 n4 S0 j$ I. }2 ^2 \2 k! qimport requests
  5. - P# r2 D& j7 j7 ^6 Ufrom bs4 import BeautifulSoup9 s/ `# n: G5 j
  6. from re import escape) Y* b7 m$ B9 u- _; {2 \
  7. : c/ l\" c: O8 y; S/ ]
  8. if __name__ == '__main__':\" Y( U9 `6 W+ s  z1 m  d; n- G
  9.     conn = sqlite3.connect('Python.db')7 Z' \! x3 d/ a5 i) i& ]3 \$ L
  10.     c = conn.cursor()
  11. ' ~& D' v# \) U& L1 k  B    c.execute('''CREATE TABLE IF NOT EXISTS Python (3 C& |1 _1 {4 v- [6 a5 o4 M' G& g$ l
  12.         Url VARCHAR,
  13. 9 e) P0 z0 [. k. I# ?8 u( |8 g1 S: m        Title VARCHAR,
  14. 8 {0 A6 J  M* P  r7 O7 R  l        Author VARCHAR( t/ Z2 o+ Y/ E2 I2 {) l# j$ g
  15.     )''')
  16. & B/ n' a1 N, E# ]( B! T    conn.commit()/ g) d. O, C) A' f
  17. # O; F* d$ r: ]/ G( d. v0 x' t
  18.     # --------------------Split Line--------------------+ ^1 w- s; q: o  s. g
  19.     headers = {
  20. 9 q& b. d5 i, V( P        "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. 0 j6 p8 ~  I1 c+ r2 M    }
  22. , S0 X) \! O  M  a+ \) _' s. p! T, g/ e9 o& C
  23.     for i in range(1, 1046):4 w. v9 E% o' M* b
  24.         url = "http://xxx/index_%s.html" % str(i)( u) x' Q0 c\" F; N, k$ ^( m% ]$ f0 A
  25.         req = requests.get(url=url, headers=headers), C5 y( l# O9 c8 S# T
  26.         req.encoding = "utf-8"' ?. [1 U. U1 T
  27.         html = BeautifulSoup(req.text, "lxml")9 y5 U2 ~! z- F9 v6 b0 P

  28. * K# t1 R& U: L6 `. @. T        # --------------------Split Line--------------------
  29. , T# {/ h  g4 u1 e( n; X, F! e3 \        for div in html.find_all('div', class_='loop'):! Z8 N) o9 A$ r# ?; N+ b  H+ p
  30.             content_body = div.select('h2 > a')[0]' o9 i6 Z, N+ ^+ I% f* P2 }0 I
  31.             content_infor = div.select('.content_infor > span:nth-child(3)')[0]
  32. 2 o' f. C& y* Z1 Q\" x\" k
  33. ! t3 A# [9 _) w            # --------------------Split Line--------------------
  34. - Z* s. q& Y. n( E/ ?            cursor = c.execute(
  35. : |8 a) \% ^+ R8 M                "SELECT COUNT(*) FROM Python WHERE Url = '%s'" % ("http://xxx" + content_body.get('href')))
  36. ) q6 d, |( @; ^* L# d7 i7 J/ y            len = 0
  37. 1 t  a% x2 e5 T, r) K# l$ J- P            for row in cursor:/ A* @4 l\" F. i. c9 |6 T0 p; G: C
  38.                 len = row[0]6 ?& f+ r6 ^5 N. l! }6 w0 _
  39.             if len > 0:5 ^! o! e8 d' u
  40.                 continue
  41. 5 b, u& E2 `/ E; N( o3 I$ Z8 F
  42. ' ~0 p# {\" T\" q' D' |: ~9 m* ~            # --------------------Split Line--------------------- w# R7 {$ \$ x
  43.             c.execute('INSERT INTO Python( Url, Title, Author) VALUES ( "%s", "%s", "%s")' % (# i* u2 T4 F9 K7 b- u
  44.                 "http://xxx" + content_body.get('href'),
  45. 2 Y; F  i8 R- l% o  Q                escape(content_body.get('title').replace("\"", "\"\"")),
  46. 2 s  r# r) m# X- Q# N6 g) h& N                content_infor.text.replace('xxx: ', '')))3 u  ^% P4 s\" r, k- T! {
  47. $ T4 V$ z1 P/ L- Q: ^
  48.         conn.commit()
  49. ( \6 T  N6 e6 d* Q9 @        print("第%s页" % str(i))
  50. - H% A& H' C- K
  51. 6 t9 e) V  Z. B3 ]3 r1 e  X    # --------------------Split Line--------------------' a* x% H  }. S$ L
  52.     conn.close()
  53. . q6 S) R4 K$ f8 j

0 w# b, ], ~4 N( Y# l( X
! B7 F. k9 s6 L2 B
转发自派生社区
Python交流群:1047602540

4 Y2 }, N5 f. e  s/ \3 @5 A
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-28 06:37 , Processed in 0.491631 second(s), 49 queries .

回顶部