QQ登录

只需要一步,快速开始

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

Python-网页爬虫与Sqlite3

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

7

主题

3

听众

10

积分

升级  5.26%

该用户从未签到

自我介绍
我本名为我,那就是我
跳转到指定楼层
1#
发表于 2021-1-14 08:44 |只看该作者 |正序浏览
|招呼Ta 关注Ta
  1. #!/usr/bin/python
  2. 3 O# a$ s: ]: [  ?$ \\" J# -*- coding: utf-8 -*-' U( F4 W' _' s( w) i\" \! T* l

  3. 5 r6 Z& E: p4 d( t( u' `import sqlite3
  4. 7 D7 c$ g, Z% l* U8 rimport requests; p: r: I! s0 n; q0 ~+ M4 ~
  5. from bs4 import BeautifulSoup* A9 Z$ T. W) q, q
  6. from re import escape+ u2 S+ q$ o8 [1 m

  7. \" z1 v9 q1 z  k6 R$ zif __name__ == '__main__':/ r5 `$ z$ g) ?; |
  8.     conn = sqlite3.connect('Python.db')
  9. % Z2 m  q4 e* X- ]    c = conn.cursor()
  10. + D: x% ?* E( x    c.execute('''CREATE TABLE IF NOT EXISTS Python (' s+ o; V8 [9 |0 g
  11.         Url VARCHAR,- l: C7 S\" P3 [( r  L\" M! u
  12.         Title VARCHAR,$ ~\" f- @8 L* G; K
  13.         Author VARCHAR
  14. - ?; k  Q8 k0 n! X: ?    )''')
  15. ) Y! t; W9 M' m7 {1 \    conn.commit()) f  }5 n: s2 @3 ?/ f+ a

  16.   ?3 x, z2 ]! K$ l4 j! C& q+ r    # --------------------Split Line--------------------
  17. 9 d6 ^1 }) P/ p! k6 c    headers = {$ W- X, A: [7 N$ h7 n9 h5 t# G: M
  18.         "User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.87 Safari/537.36"
  19.   V1 ?5 o- h4 @0 R: s* x3 |    }
  20. ; r7 y% v7 ^4 `2 x
  21. ! k7 u+ \  x8 Q$ |4 F    for i in range(1, 1046):% B+ R' ^& a; w- r# s
  22.         url = "http://xxx/index_%s.html" % str(i)' q7 Z: f0 ]1 @' j* N2 r' @! R) ^
  23.         req = requests.get(url=url, headers=headers)
  24. * u2 r2 U\" x7 d! Y        req.encoding = "utf-8"
  25. # U1 G7 Q  o9 r7 j. v7 B# V        html = BeautifulSoup(req.text, "lxml")# `# ^( r' E7 h- }) h

  26. + H! t3 D2 F- v6 B        # --------------------Split Line--------------------
  27. ' ^* y$ Q$ k5 h( L7 {\" I9 Z. N        for div in html.find_all('div', class_='loop'):8 E7 y, i  j; Y# l. H8 q5 t/ X
  28.             content_body = div.select('h2 > a')[0]
  29. , y! M0 Y* {( |6 ]7 A1 d/ M' r+ A+ v            content_infor = div.select('.content_infor > span:nth-child(3)')[0]
  30. 6 P. h; x: t  K: H$ ?% M9 Y9 R) X
  31. $ r$ w& c; m% c) q            # --------------------Split Line--------------------
  32. 5 y( s9 ~* w; _; |4 l            cursor = c.execute(
  33. 6 n- @9 k# k% l0 v$ v% b                "SELECT COUNT(*) FROM Python WHERE Url = '%s'" % ("http://xxx" + content_body.get('href')))
  34. 7 t! n) _# A, }- ]( _) `- l            len = 0
  35. 5 q. `: }7 P# @) l            for row in cursor:' O- w* [8 ^; i
  36.                 len = row[0]
  37. 0 F  |3 o0 y8 \) s* q6 ~& {& a6 g! |            if len > 0:5 d4 _* L# j# D: {+ ~# P
  38.                 continue2 ~1 T2 ]4 r$ j! t9 S4 V
  39. 5 Y8 P* W; J5 G, G
  40.             # --------------------Split Line--------------------  R. ^1 f, A0 e
  41.             c.execute('INSERT INTO Python( Url, Title, Author) VALUES ( "%s", "%s", "%s")' % (# T- w; O1 _0 ~0 T/ u' d- `
  42.                 "http://xxx" + content_body.get('href'),( J7 f7 ~- k1 G. D0 q9 ^
  43.                 escape(content_body.get('title').replace("\"", "\"\"")),
  44. $ j2 Z\" {( ]  b% u: Q! G1 h2 i                content_infor.text.replace('xxx: ', '')))1 p/ c6 p% O) Z+ l, \; M; `( X

  45. $ L\" \; o' D  @7 f' L6 l* u1 r        conn.commit()
  46. 7 ]\" K  r0 \# A/ Q. E! |3 g: u        print("第%s页" % str(i))
  47. - r7 [\" C; R, \: S. O4 z
  48. , [$ a0 t6 i; [    # --------------------Split Line--------------------* r( k2 Y, J% r
  49.     conn.close()$ G/ Q2 F' B, `1 i8 O& a
% q0 n& G+ ~. ^. L7 f4 z

! b+ {  J  U( M/ x0 _5 P
转发自派生社区
Python交流群:1047602540

* {/ }. H+ p; x9 c0 U) H, V- d
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-9-2 18:17 , Processed in 3.163629 second(s), 50 queries .

回顶部