QQ登录

只需要一步,快速开始

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

Python-网页爬虫与Sqlite3

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

7

主题

3

听众

10

积分

升级  5.26%

该用户从未签到

自我介绍
我本名为我,那就是我
跳转到指定楼层
1#
发表于 2021-1-14 08:44 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
  1. #!/usr/bin/python
  2. ) }) e5 ~: X. {5 n. a& ?# -*- coding: utf-8 -*-
  3. \" C8 W4 z2 f+ |3 v( ]& D4 C6 X- H& {; A) Z6 L
  4. import sqlite3
  5. 8 `  F0 v# v0 M# Kimport requests
  6.   a) \- g; A) |* N2 W- ufrom bs4 import BeautifulSoup4 {2 A% h- X4 o6 I0 v\" r
  7. from re import escape
  8. 2 [1 {0 ?/ D7 p' B, q' ^7 I# A' S+ B
  9. if __name__ == '__main__':
  10. \" Z5 J! v8 N' V  G$ l, y8 h\" {    conn = sqlite3.connect('Python.db')
  11. & r: o' w: H\" d# I3 }- K2 K    c = conn.cursor()( q; h& F: Q0 y# Y% O6 q
  12.     c.execute('''CREATE TABLE IF NOT EXISTS Python (
  13. * h4 a7 @7 `3 C\" h# w        Url VARCHAR,
  14. 3 ]\" `' l\" ^+ U        Title VARCHAR,% D0 P\" x; X0 Y; u8 H- P9 V! Z
  15.         Author VARCHAR
  16. & q7 N! B* K+ T0 _$ _( M    )''')
  17. / p$ W\" i\" V. T2 d* x$ i    conn.commit()
  18. 7 J2 K4 b* ?% H
  19. 0 ~5 Z5 k+ A$ J9 _7 v    # --------------------Split Line--------------------
  20. . X3 Q4 |0 I' O: G& \; V    headers = {
  21. , B# u5 t( @7 t$ }1 b% 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"
  22. * G6 I8 F' |+ f9 G, R  w( v    }
  23. : Q0 f' d4 q6 |& Q) `* \4 U
  24. + l4 S* J1 a+ T1 y. ]& \9 `: k    for i in range(1, 1046):7 N# Z1 j* B  b
  25.         url = "http://xxx/index_%s.html" % str(i)& R, B& K7 M$ }6 ^! y% b3 [6 w
  26.         req = requests.get(url=url, headers=headers)
  27. + z+ x4 F6 h) |, i( |  O        req.encoding = "utf-8"% {. G5 M1 O& T
  28.         html = BeautifulSoup(req.text, "lxml")
  29. & h4 m2 [9 \- t1 C# V) a
  30. , y  [- T  j) d6 ]! c; ]        # --------------------Split Line--------------------' o5 H) o) @9 r: F
  31.         for div in html.find_all('div', class_='loop'):
  32. 5 H! r' ~8 p6 h  T( d5 j            content_body = div.select('h2 > a')[0]' V& W2 @8 N+ \
  33.             content_infor = div.select('.content_infor > span:nth-child(3)')[0]) j) w5 M) P* _
  34. : d6 e% h; j1 R- v* [$ s$ E
  35.             # --------------------Split Line--------------------% N9 p$ S. H7 i
  36.             cursor = c.execute(; \: _& I) C/ D4 F9 e% |1 D6 E
  37.                 "SELECT COUNT(*) FROM Python WHERE Url = '%s'" % ("http://xxx" + content_body.get('href')))
  38. . I5 t0 N, q! U% x0 A            len = 0- G$ f; w% H! Z$ ~' F
  39.             for row in cursor:
  40. 6 \! r  I\" f2 }9 r4 f3 w% F                len = row[0]
  41. 2 I- `. F& E* v. @\" I0 ]            if len > 0:
  42. 2 V5 u9 f' l# {* N/ C                continue
  43. ( a7 n( h& H; V0 b, d' O7 w4 z  |* p! v% C$ v
  44.             # --------------------Split Line--------------------
  45. / s/ ^3 \9 F0 F5 @            c.execute('INSERT INTO Python( Url, Title, Author) VALUES ( "%s", "%s", "%s")' % (7 Y1 V9 y. d( }$ C
  46.                 "http://xxx" + content_body.get('href'),. ^- h6 ], M1 R$ F- M
  47.                 escape(content_body.get('title').replace("\"", "\"\"")),( e& y8 [: [6 M& O+ `6 Z1 H* e
  48.                 content_infor.text.replace('xxx: ', '')))
  49. 9 S\" Y) Z, B1 O1 \& X9 j- L- N: k% j\" N8 c( L
  50.         conn.commit()\" W  ^# ~7 J5 W' `2 Z
  51.         print("第%s页" % str(i))0 F9 r\" _7 _; ]
  52. ! o' A& }( s& p9 i% G5 G
  53.     # --------------------Split Line--------------------
  54. 9 w8 G) Y: x5 O! k6 K' u1 J    conn.close()& z. `( T* f2 J
' J" _' t0 Y7 I% S8 b
! T. Z0 \# P# K& B: ]4 H
转发自派生社区
Python交流群:1047602540
5 w, b# A" V1 U
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 22:53 , Processed in 0.352188 second(s), 49 queries .

回顶部