QQ登录

只需要一步,快速开始

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

Python-网页爬虫与Sqlite3

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

7

主题

3

听众

10

积分

升级  5.26%

该用户从未签到

自我介绍
我本名为我,那就是我
跳转到指定楼层
1#
发表于 2021-1-14 08:44 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
  1. #!/usr/bin/python
  2. . T4 R/ Y, X5 {# h& l# -*- coding: utf-8 -*-
  3. * H1 J$ |. d  E+ y* s2 g  E. _/ v# N7 _3 R. a% A
  4. import sqlite3
  5. : X- c7 D0 a* @\" l0 n/ mimport requests
  6. 4 i5 t+ w6 R( _% m' A, ]from bs4 import BeautifulSoup
  7. \" G6 ?' R! W0 D$ x2 ]- e3 N1 ]7 ]from re import escape
  8. 9 p4 Y, n5 I+ }- U
  9. / @* w, n6 g- E. P2 D7 }if __name__ == '__main__':4 a% Z, L  }2 Y9 i- _
  10.     conn = sqlite3.connect('Python.db')
  11. 9 g7 u0 p( d. D    c = conn.cursor()
  12. 3 o6 z, @7 e* ?\" t0 F    c.execute('''CREATE TABLE IF NOT EXISTS Python (
  13.   S, t) V: {2 x$ A6 d. A        Url VARCHAR,, }' J  |0 L8 d9 J, m; ~& |  p
  14.         Title VARCHAR,( r: J/ k& H: K+ b+ q
  15.         Author VARCHAR' b. |6 A6 a1 X2 X) j
  16.     )''')
  17. * x: R# y% z) b( s    conn.commit()$ x\" h0 m4 W/ f7 h7 j) t
  18. \" X% G& T1 Q# D( Z* `7 i* Z
  19.     # --------------------Split Line--------------------! a0 f* R( f& Y/ ~. \- `: N
  20.     headers = {
  21. ! D2 d! N. z, }# N( I: O        "User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.87 Safari/537.36"% F' C6 x! p: a' R+ n  B
  22.     }
  23. ( y8 D: T9 I3 O& b* j( Y7 i; g7 W0 a
  24.     for i in range(1, 1046):: t\" F& \3 y. [
  25.         url = "http://xxx/index_%s.html" % str(i)# W& N8 d& e; L6 j7 c% f
  26.         req = requests.get(url=url, headers=headers)
  27. ! n: \/ I( k, @3 |. z* b        req.encoding = "utf-8"+ z3 H  ]; h. C/ G6 C
  28.         html = BeautifulSoup(req.text, "lxml")$ t, d- g. F% i) r

  29. $ L9 Q9 \4 L4 R\" @- D) P        # --------------------Split Line--------------------
  30. & a+ `2 e* ]8 j# R        for div in html.find_all('div', class_='loop'):
  31. 9 ?\" B% k0 ?+ F2 h2 F5 N            content_body = div.select('h2 > a')[0]# `) h1 Z. A) a
  32.             content_infor = div.select('.content_infor > span:nth-child(3)')[0]% B, d/ z1 |; ~1 L/ G! t

  33. ; j: x% K( j$ _: }1 W\" l: k            # --------------------Split Line--------------------) g. y% @5 |/ X5 O$ S
  34.             cursor = c.execute(3 p! k; @1 c7 J+ J5 r
  35.                 "SELECT COUNT(*) FROM Python WHERE Url = '%s'" % ("http://xxx" + content_body.get('href')))
  36. , C: u; ^2 t0 C8 L, m* S5 g* W            len = 08 w* Y/ o/ b  M& O\" W0 w# a! t9 q$ i
  37.             for row in cursor:
  38. 2 ?4 }2 i/ s5 u+ R+ i3 E' v                len = row[0]
  39. 4 h  |1 I7 I. r8 F9 s) {            if len > 0:) R9 l  O& f1 X6 \+ b! M- |, ^
  40.                 continue0 a0 S6 ~0 [' k: m. \6 E5 v

  41. , e# T& f, R, G  p' |, B4 K            # --------------------Split Line--------------------
  42. 3 D% ?/ g% m0 I( D2 T( A; G* }            c.execute('INSERT INTO Python( Url, Title, Author) VALUES ( "%s", "%s", "%s")' % (
  43. % ?% r0 b9 \$ |- }' a& S1 }                "http://xxx" + content_body.get('href'),, Y2 Z9 K; K: @; [\" [/ M\" L
  44.                 escape(content_body.get('title').replace("\"", "\"\"")),
  45. : l, Q\" |' ^* d+ Q2 n                content_infor.text.replace('xxx: ', '')))
  46. & R& R9 J, T5 G0 D2 C8 a- i: b- R& H
  47.         conn.commit()
  48. 1 z4 N4 H. }3 z, `& U8 F3 c& O' e        print("第%s页" % str(i))
  49. % C  O% u- |& }) [. q& `
  50. 3 T: f: w( c% A\" F0 U2 A1 ^- e2 R$ e) f- O    # --------------------Split Line--------------------\" H' O% q5 n5 l- O3 r; M- d
  51.     conn.close()
  52. + g, a/ f- }; Z/ w- L) U

5 d3 k- C& L" }8 F4 W( y
2 \: }8 V% E2 ]- P$ [
转发自派生社区
Python交流群:1047602540

' C5 E. O7 H+ z5 `
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-7-18 12:30 , Processed in 0.384992 second(s), 50 queries .

回顶部