QQ登录

只需要一步,快速开始

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

Python-网页爬虫与Sqlite3

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

7

主题

3

听众

10

积分

升级  5.26%

该用户从未签到

自我介绍
我本名为我,那就是我
跳转到指定楼层
1#
发表于 2021-1-14 08:44 |只看该作者 |正序浏览
|招呼Ta 关注Ta
  1. #!/usr/bin/python
  2.   `0 d# ?\" ?, B. v# -*- coding: utf-8 -*-5 `: D0 q7 q7 Q0 I\" q( J
  3. ! `7 G( J$ D1 t8 H
  4. import sqlite3+ v1 z. {+ C  U8 ^  `3 \
  5. import requests1 z5 E' l5 W) }% r\" R: e& X; a
  6. from bs4 import BeautifulSoup
  7. - u9 V; M1 m/ \\" [- x0 @6 [from re import escape, S\" V5 Y$ g4 L5 t) z$ K
  8. 7 }5 ]  H1 g( q  \, R
  9. if __name__ == '__main__':8 }+ k) m, q: t  r. G/ T
  10.     conn = sqlite3.connect('Python.db')9 a$ s5 x6 i3 G\" O  [7 J7 t
  11.     c = conn.cursor()
  12. / `$ D1 u8 ]- N& b    c.execute('''CREATE TABLE IF NOT EXISTS Python (
  13.   b\" H( y0 P0 h9 |9 e% m6 p& Y0 \        Url VARCHAR,
  14. # O\" ?( i6 a! }7 K% i( ^: a        Title VARCHAR,
  15. # i. K6 T) i. s# ^& z+ X        Author VARCHAR6 h1 C6 \% o1 F; D6 W
  16.     )''')
  17. 1 h0 U2 d, D- T    conn.commit()
  18. # r4 ]\" R' j9 D7 I
  19. - T) o) F+ c7 H2 Y, ~2 N    # --------------------Split Line--------------------
  20. % A- p/ w\" ^9 n  ~    headers = {
  21. 9 Q' N# v# q% R( |0 n        "User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.87 Safari/537.36"
  22. * w. s' B/ F9 x- K+ R    }
  23. ' K6 I' f# @( S( Z) D0 J
  24. 7 Z0 `7 f% J+ F) O5 u- d9 |5 O    for i in range(1, 1046):
  25. + T6 g- d4 t5 h        url = "http://xxx/index_%s.html" % str(i), I* s1 h, |# g: O
  26.         req = requests.get(url=url, headers=headers)1 U+ ^\" [& Y\" y) {% D+ K: \
  27.         req.encoding = "utf-8"7 ^' ~0 a+ t- B- B
  28.         html = BeautifulSoup(req.text, "lxml")
  29. 7 F4 u9 E( O- {, {2 r9 Z5 V
  30. ( O( [- Z- O$ n. R2 z& j5 M7 m        # --------------------Split Line--------------------
  31. * K9 ]+ ]6 ~7 N! b7 ?        for div in html.find_all('div', class_='loop'):
  32. 8 P4 l4 Q7 q# u/ K$ B) M+ M            content_body = div.select('h2 > a')[0]* j+ j4 T) ?6 X: P8 M# u2 a
  33.             content_infor = div.select('.content_infor > span:nth-child(3)')[0]
  34. 3 c. i+ X4 ?; Q% `6 i4 W9 n/ s* [% m6 c6 n
  35.             # --------------------Split Line--------------------
  36. 7 T- Q6 E9 S2 e& Y6 f            cursor = c.execute(* {# R) O! I5 x
  37.                 "SELECT COUNT(*) FROM Python WHERE Url = '%s'" % ("http://xxx" + content_body.get('href')))
  38. 1 w8 [) Z6 }) {! j            len = 0& W9 B$ ^7 @- |; G
  39.             for row in cursor:' u% ?0 ?* ]/ O, _
  40.                 len = row[0]0 i: ~* j+ N) G: b( _+ u  J. N
  41.             if len > 0:8 p& i) ~' ?9 T5 Q  E
  42.                 continue' ]0 c0 N, P, I: b% L

  43. ) R7 i! \7 t- w( X+ @( \' Y- s            # --------------------Split Line--------------------3 I* i% n6 `0 _$ ~
  44.             c.execute('INSERT INTO Python( Url, Title, Author) VALUES ( "%s", "%s", "%s")' % (
  45. : J8 t& l$ e! d1 l! w. T                "http://xxx" + content_body.get('href'),
  46. \" B% o; Q( [& d  v2 Y' \' s                escape(content_body.get('title').replace("\"", "\"\"")),, _1 m, ~* B+ s2 R
  47.                 content_infor.text.replace('xxx: ', '')))
  48. 2 Z+ D$ h$ G+ k) }$ d: i2 \0 S\" H. }! z# N; m
  49.         conn.commit()
  50. 2 z3 L6 \% N& S        print("第%s页" % str(i))3 Y! B\" ?/ D6 t# ?. U& I
  51. ' V, p) Y/ [/ K+ f# V* h2 @
  52.     # --------------------Split Line--------------------
  53. + ^& Q9 J3 t' y5 O( k  q: l    conn.close()( `; i9 g* F$ D
9 c0 q& N: w+ U: U9 O

9 L7 b  ?7 C1 ?
转发自派生社区
Python交流群:1047602540
! z$ k* F3 Q/ z* v& C  g, m
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 09:22 , Processed in 0.375922 second(s), 50 queries .

回顶部