QQ登录

只需要一步,快速开始

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

Python-网页爬虫与Sqlite3

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

7

主题

3

听众

10

积分

升级  5.26%

该用户从未签到

自我介绍
我本名为我,那就是我
跳转到指定楼层
1#
发表于 2021-1-14 08:44 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
  1. #!/usr/bin/python  t  h4 U( U6 _\" p; i; H4 @
  2. # -*- coding: utf-8 -*-
  3. # p' ]; R' |( R: @. Y2 v* w0 F, N\" X0 a: g
  4. import sqlite3
  5. & ?# e! y2 E9 B! K  |import requests
  6. 5 Q# v\" a* G$ p9 T8 ffrom bs4 import BeautifulSoup* t5 Q1 M$ Z* B* v1 h7 u+ H
  7. from re import escape4 _  Q/ X' ]# t. U

  8. 0 k9 r: J  u% R+ O: mif __name__ == '__main__':4 t6 L' P) `0 o
  9.     conn = sqlite3.connect('Python.db')9 _4 `, i8 v! b* }/ r* s
  10.     c = conn.cursor()
  11.   R: n$ K+ `( r+ S; r1 S    c.execute('''CREATE TABLE IF NOT EXISTS Python (+ F) t: |. s( {' |$ ]6 o  N: h
  12.         Url VARCHAR,9 o, t. U  }' u3 t! X  m0 t
  13.         Title VARCHAR,
  14. 5 T. k% F5 c  j  r! h$ U        Author VARCHAR% a0 C/ Z7 E0 @0 R# l
  15.     )''')
  16. 2 p- b  O  U, I    conn.commit()
  17. 0 D- Z' P  H+ U7 u6 ]' M3 ?
  18. # m8 V: ^0 m0 _    # --------------------Split Line--------------------
  19. ; x1 ~5 B5 \8 k1 E) x    headers = {
  20. ' x: l1 d\" f5 d3 z! c' x0 c& J        "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. % k\" I+ `  r9 ~5 n6 B- ?    }
  22. 4 J% Y- n& q7 }, E0 i\" o: @. Y, ^# P
  23. 6 m3 R$ J5 P! }$ z6 W, N, j    for i in range(1, 1046):: W: w- O3 d# F) e6 g0 l
  24.         url = "http://xxx/index_%s.html" % str(i)0 b( I2 L- i3 K+ c
  25.         req = requests.get(url=url, headers=headers)! k% u: d: C- v! s' j1 [* m
  26.         req.encoding = "utf-8"% z# I' ?7 B7 ~( X\" G3 B' ~& k
  27.         html = BeautifulSoup(req.text, "lxml")3 I+ D0 s5 ~+ I  |

  28. % {' Z* G5 ?0 z1 _        # --------------------Split Line--------------------
  29. \" @: P4 d, p  p4 b& D: j+ z        for div in html.find_all('div', class_='loop'):
  30. ! Q8 N4 ^' p. f! i/ a            content_body = div.select('h2 > a')[0]0 ~' [* {/ Y% `* i. j! _0 S
  31.             content_infor = div.select('.content_infor > span:nth-child(3)')[0]
  32. 4 h9 `/ S* Q& h
  33. . P\" q% W$ ]* p( b6 q' M( L            # --------------------Split Line--------------------
  34. 9 e* e$ P& V  K8 D0 @2 L            cursor = c.execute(
  35. $ P9 E/ ?$ p0 ]# C- `                "SELECT COUNT(*) FROM Python WHERE Url = '%s'" % ("http://xxx" + content_body.get('href'))). A# l* y+ E: X* P2 c
  36.             len = 0
  37. 6 N% R' a8 h) T8 C            for row in cursor:
  38. # g1 w+ d2 z7 v& B8 _$ I9 F                len = row[0]) |0 z6 \6 M2 ~$ U
  39.             if len > 0:& [1 f+ `! [# B, b\" Q* l
  40.                 continue3 h3 J& G5 _. A1 J/ K5 ]2 y
  41. 4 P/ G9 @8 B6 W- o* v  h
  42.             # --------------------Split Line--------------------
  43. ; h- r; \- z\" c) Z0 A0 m            c.execute('INSERT INTO Python( Url, Title, Author) VALUES ( "%s", "%s", "%s")' % ($ T; \$ y. i1 X4 @- j
  44.                 "http://xxx" + content_body.get('href'),
  45. # G9 I8 S0 ^9 C! O* y5 q: G7 ~                escape(content_body.get('title').replace("\"", "\"\"")),
  46. / i( y/ T# `5 J) \# i1 m                content_infor.text.replace('xxx: ', '')))* k) ?+ M  j% L9 r& N
  47. 4 T5 r) c* E& @7 T6 K! A, [0 q% L
  48.         conn.commit(); q' [3 f8 Y# Y# e3 M
  49.         print("第%s页" % str(i))  Y: r8 Z2 k+ u! p

  50. ) U8 W# G: s; u/ c    # --------------------Split Line--------------------
  51. \" k6 F( Z# _6 t* w% C& }( ?    conn.close()( ?+ ?: O/ z( k9 F  [

4 Y& r  p% R  s% i( S- x  x% u+ ^2 |3 K4 d  a
转发自派生社区
Python交流群:1047602540

) h# ]$ m0 ~, P  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-6-2 22:36 , Processed in 0.430818 second(s), 50 queries .

回顶部