QQ登录

只需要一步,快速开始

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

Python-网页爬虫与Sqlite3

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

7

主题

3

听众

10

积分

升级  5.26%

该用户从未签到

自我介绍
我本名为我,那就是我
跳转到指定楼层
1#
发表于 2021-1-14 08:44 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
  1. #!/usr/bin/python0 u. N) \, @- E& V% A
  2. # -*- coding: utf-8 -*-
  3. : t5 H2 C$ M& U0 {; {& d1 {5 m. e, N. s, T( J! ?
  4. import sqlite3& @' o2 k5 M, p6 Q2 t/ D/ g
  5. import requests
  6.   _6 D$ b4 H) k\" Rfrom bs4 import BeautifulSoup
  7. 0 i' ?\" \2 P5 L. C4 \from re import escape
  8. ! R6 }; f6 D8 z, p
  9. 7 P- @. I8 ?( V' oif __name__ == '__main__':
  10. 5 h3 y, {* S6 n  m) T0 U' K    conn = sqlite3.connect('Python.db')
  11. 6 J8 x: |/ g8 ]    c = conn.cursor()
  12. / h  {9 X( N9 t. U- G$ b# g    c.execute('''CREATE TABLE IF NOT EXISTS Python (0 {& e# Q+ K8 T
  13.         Url VARCHAR,  e\" H% j1 @3 T0 `: D
  14.         Title VARCHAR,
  15. 7 P4 g6 u5 I5 ^9 g$ F/ [% j3 q        Author VARCHAR' S. a; t+ r) b. e4 U- ]1 O! c
  16.     )''')
  17. 2 Q; p, F\" A% w    conn.commit()) t8 Q\" k  X' I2 a& J

  18. # C7 N9 n' |& W# T/ ]1 D    # --------------------Split Line--------------------
  19. 3 k) K8 q2 j1 d5 K. m/ N% P    headers = {
  20. 7 D( f( t% c* |% G. T        "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. $ B) F5 ?! i- S$ C3 h; c: i    }
  22. & ^4 t. K7 c* ]& Y6 D\" j
  23. ( N. D9 l3 h0 M' q    for i in range(1, 1046):
  24. - e/ f2 w4 v3 ?1 j        url = "http://xxx/index_%s.html" % str(i)3 r0 a& i6 c\" m; q' \7 Y
  25.         req = requests.get(url=url, headers=headers); m* z% l  }- t' S; |' g0 L
  26.         req.encoding = "utf-8"! D& i' ~, Q. [& ?
  27.         html = BeautifulSoup(req.text, "lxml")
  28. ' }/ l) ^) g1 D7 w( ?* y' f5 ]. }3 J. B: ]; R$ y% S! U( u6 ^
  29.         # --------------------Split Line--------------------4 P1 T8 z% D/ e' L  ]
  30.         for div in html.find_all('div', class_='loop'):* K6 L0 b- l8 N/ \+ T9 [
  31.             content_body = div.select('h2 > a')[0]* X' ?5 a: U0 q# n: Q\" _- E9 k
  32.             content_infor = div.select('.content_infor > span:nth-child(3)')[0]8 H( Y( g+ r5 V/ x
  33. * R  s\" E# e/ N2 C& R5 r! U; b
  34.             # --------------------Split Line--------------------3 B. d! B7 J  i; K% N
  35.             cursor = c.execute(
  36. ; ]0 [! ]% [- q  I! }                "SELECT COUNT(*) FROM Python WHERE Url = '%s'" % ("http://xxx" + content_body.get('href')))
  37. . [# d\" N- q8 F7 y6 e$ v) F1 B4 b2 T            len = 05 t: ]* Q3 j6 l3 y
  38.             for row in cursor:
  39. & D7 x6 {/ j0 l\" w& `. P6 B: f                len = row[0]% e3 D% S2 |) o6 k
  40.             if len > 0:
  41. 9 Q+ N. F& ~* @* ?; O                continue
  42. ' ~4 g7 I! \0 l7 z5 F6 \! H4 r: d3 b& L/ N# J+ P
  43.             # --------------------Split Line--------------------
  44. : Z$ d! W8 m8 K7 S( C            c.execute('INSERT INTO Python( Url, Title, Author) VALUES ( "%s", "%s", "%s")' % (\" I* @1 ~& o\" n6 r& J6 [+ A
  45.                 "http://xxx" + content_body.get('href'),
  46. ; S7 T9 T& {( s4 F6 f                escape(content_body.get('title').replace("\"", "\"\"")),
  47. : `8 U+ P7 o3 C* J7 X: x                content_infor.text.replace('xxx: ', '')))* `) z) X/ ]* u, i
  48. 0 G& Y9 b3 l! Y5 S! l- F\" J
  49.         conn.commit()
  50. 2 E7 R\" Y6 d6 m! K        print("第%s页" % str(i))3 ]; n- D' |; D8 Q7 P
  51. . |' i. F6 b( P; D
  52.     # --------------------Split Line--------------------. [! n. ]8 i1 M: z# j4 y
  53.     conn.close(), A! X) I' P! u5 ?

& M. y# m  w( ]4 \) ?, F  h  L. {/ i6 w
转发自派生社区
Python交流群:1047602540

, ]% r  U2 q5 }6 s6 n: }
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-19 19:24 , Processed in 0.412421 second(s), 50 queries .

回顶部