QQ登录

只需要一步,快速开始

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

Python-网页爬虫与Sqlite3

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

7

主题

3

听众

10

积分

升级  5.26%

该用户从未签到

自我介绍
我本名为我,那就是我
跳转到指定楼层
1#
发表于 2021-1-14 08:44 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
  1. #!/usr/bin/python
  2. . _! P  H0 ?5 F/ O$ N4 k( |( E! `# -*- coding: utf-8 -*-
  3. 1 t  G- E+ ?: U) _0 I
  4. $ ~$ c  {0 y# ~& f/ j9 J) H# kimport sqlite3! p2 s# o1 u- W$ t5 I( B
  5. import requests
  6. % x\" ^) \( a. R3 Q( Q6 B7 C4 ^from bs4 import BeautifulSoup
  7. 0 i0 M\" [' h8 z1 @4 z( k3 o6 Wfrom re import escape+ [4 B2 }0 G* Q! q* A7 q
  8. - C: m; w0 h) ?( C0 i
  9. if __name__ == '__main__':
  10. / V4 [6 O9 a0 g- \+ r+ C8 R    conn = sqlite3.connect('Python.db')
  11. 9 X) H2 J8 c( a\" p+ F    c = conn.cursor()4 W\" A# i- O+ @
  12.     c.execute('''CREATE TABLE IF NOT EXISTS Python (
  13. 6 R) A# i- ~+ Q, S        Url VARCHAR,
  14. 2 r\" _, H) {; K0 D, \/ a: w        Title VARCHAR,5 C- a\" H, v\" v6 H4 V; X& x
  15.         Author VARCHAR, K) n& ], w3 [8 ^\" ?# i
  16.     )''')
  17. ; ^/ `0 R+ i5 c! `2 F7 V; d( I8 w' L    conn.commit()
  18. 0 M1 A( C+ u0 D. Z/ i$ B' c6 }# q* a, @% Y6 V$ C3 ~& {7 j7 y
  19.     # --------------------Split Line--------------------1 m' |* F) w. p8 e
  20.     headers = {
  21. ( o9 B\" N. J9 J4 \- Z        "User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.87 Safari/537.36"  o4 n# U2 x& H6 w2 ^( c' u
  22.     }9 L$ e  G\" g7 w; |8 l

  23. 1 _# X2 A7 i& o) ]\" ^! j& |! c    for i in range(1, 1046):
  24. % t+ D$ D: U. e& q        url = "http://xxx/index_%s.html" % str(i)
  25. 4 A+ [- Y8 o- ~, w7 |  U: ~5 `\" U        req = requests.get(url=url, headers=headers), E- \' x' C; u* W\" F
  26.         req.encoding = "utf-8"( ^8 }! i* \  Q\" X0 M
  27.         html = BeautifulSoup(req.text, "lxml")0 l\" `; o+ R5 A  \3 r2 F! Y

  28. ( D8 i9 V2 c8 I4 V# r        # --------------------Split Line--------------------, z: E* f7 S\" v1 B( R! B
  29.         for div in html.find_all('div', class_='loop'):, c* m+ n8 L* B3 U6 s0 V* P, V
  30.             content_body = div.select('h2 > a')[0]' `: m\" Y\" A9 L$ I
  31.             content_infor = div.select('.content_infor > span:nth-child(3)')[0]) E8 O* E5 k$ k. ^: r% Z' j/ M- @5 y
  32. $ f, t2 Z. w6 r' ?' Z; l
  33.             # --------------------Split Line--------------------( ?3 V) l/ r3 x+ g: E! W
  34.             cursor = c.execute(
  35. + f  c( ]( g6 d+ F, q                "SELECT COUNT(*) FROM Python WHERE Url = '%s'" % ("http://xxx" + content_body.get('href')))! h- Q6 ?2 C! o; R
  36.             len = 0! l9 t. b0 ]2 }\" Z* j3 Z- [2 X
  37.             for row in cursor:( n! O4 ^4 p& q  {, B
  38.                 len = row[0]0 i9 K5 U% \) u7 N) I
  39.             if len > 0:
  40. ' N# u3 i& p, d4 b+ U4 H                continue
  41. 5 C0 T* L/ L9 u+ X! r- A9 b0 K& \: I& c) `4 C' S9 N# A
  42.             # --------------------Split Line--------------------
  43. . }' z  W5 `4 j- r. ?7 f- r' [            c.execute('INSERT INTO Python( Url, Title, Author) VALUES ( "%s", "%s", "%s")' % (- q8 j: ?# e6 a
  44.                 "http://xxx" + content_body.get('href'),
  45. 7 [- {\" |4 D6 f6 ~- K\" f$ w                escape(content_body.get('title').replace("\"", "\"\"")),
  46. 5 C- G! \( t: G& t8 ^7 \                content_infor.text.replace('xxx: ', '')))
  47. ) I- C6 D  _, A. ^  T8 a: t/ z
  48. ' [' m8 p  i6 Z: M        conn.commit()6 P* Z/ h- ^3 h6 b
  49.         print("第%s页" % str(i))
  50. 3 L! y; Q: k1 z! q. F6 e7 ^& z4 Q
  51.     # --------------------Split Line--------------------& o) P0 o- H* g1 c2 B8 E
  52.     conn.close()8 X3 \/ y, L( h! W
1 q* I, S/ s6 X6 V* f

) I  b/ E+ |! W4 _8 m) L
转发自派生社区
Python交流群:1047602540
" D+ x, {0 x- I
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 06:33 , Processed in 2.883331 second(s), 50 queries .

回顶部