QQ登录

只需要一步,快速开始

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

Python-网页爬虫与Sqlite3

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

7

主题

3

听众

10

积分

升级  5.26%

该用户从未签到

自我介绍
我本名为我,那就是我
跳转到指定楼层
1#
发表于 2021-1-14 08:44 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
  1. #!/usr/bin/python
  2. 7 T; E: P* z& d0 W$ E5 f9 r) Y# -*- coding: utf-8 -*-
  3. ( W4 N, D9 |+ k1 U( C
  4. 0 i6 U- ~8 z\" s' w8 C9 Kimport sqlite3, z0 y' q. S- q
  5. import requests/ D# }4 `8 M) t: y, @$ z' J% W
  6. from bs4 import BeautifulSoup% k' T) x( C' o5 \
  7. from re import escape
  8. 1 M\" M, r\" U+ d) w( Z\" w2 `% O4 B3 `* w& ~! Y; p/ z
  9. if __name__ == '__main__':: W! i% a/ h3 @
  10.     conn = sqlite3.connect('Python.db')% l7 F* @4 X\" V/ ]
  11.     c = conn.cursor(); w7 D7 @- _9 C3 u% ^+ Z7 |3 J
  12.     c.execute('''CREATE TABLE IF NOT EXISTS Python (2 U) p) b; P- l: m/ ]
  13.         Url VARCHAR,
  14. 7 P* X* X# O$ I; Z/ y+ K        Title VARCHAR,
  15. 8 _$ I3 J' \6 W8 R$ K        Author VARCHAR& h8 Z$ Y, d1 e3 I$ d
  16.     )''')4 `+ w  Q1 I4 e- g
  17.     conn.commit()
  18. 3 N* q* \9 b1 a' ^2 @' t' z* X! n3 Q0 l: i0 P. t3 _7 |2 G- |: |% |
  19.     # --------------------Split Line--------------------
  20.   g7 K# x& Z* u: ^* D    headers = {; |. E3 {: r+ m. l% U
  21.         "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. 2 ~8 p' _; z: z8 T; Z    }8 H  R; U: F4 k; Q; M
  23. 5 v8 s2 Q1 {/ d3 X$ I; J
  24.     for i in range(1, 1046):
  25. ; b' _& L) ]7 B0 x/ m        url = "http://xxx/index_%s.html" % str(i). b' V3 P! y* n! L. l
  26.         req = requests.get(url=url, headers=headers)
  27. 0 a( F: q* W+ @; o\" E        req.encoding = "utf-8": E- H7 X5 k2 d
  28.         html = BeautifulSoup(req.text, "lxml")
  29. 7 d, Q- ]* h9 l3 U. ^
  30. * Q3 P0 d( K  }# |, r        # --------------------Split Line--------------------
  31. 3 G0 t0 h# X# s: n8 x# d5 T( B9 |        for div in html.find_all('div', class_='loop'):; d; Z4 F  I' t0 ^6 E
  32.             content_body = div.select('h2 > a')[0]5 \. |5 E. E( G  p. B
  33.             content_infor = div.select('.content_infor > span:nth-child(3)')[0]
  34. 2 V& T6 B* ~. N- j  E+ g, ?: r* ]3 {5 T# e# Q9 M2 y1 N
  35.             # --------------------Split Line--------------------' i  ^8 N) s( _+ K
  36.             cursor = c.execute(
  37. + ^* @8 h& H% Z5 A6 d5 x  l\" j                "SELECT COUNT(*) FROM Python WHERE Url = '%s'" % ("http://xxx" + content_body.get('href')))
  38. 2 L. _* H& u+ V: \9 N9 `) `            len = 0
  39.   }( X7 X7 D( E9 g$ N/ P            for row in cursor:
  40. 0 X  _\" ]2 B6 }  K                len = row[0]
  41. 9 d5 `/ G/ z6 k/ {; [8 r. ^            if len > 0:
  42. ' o! @; B( a. F- E& c% p; E3 \                continue
  43. % e/ p5 l; h- [; r* i
  44. 0 N# M( i6 f: r* s# Z  Q$ e            # --------------------Split Line--------------------( `7 I  K& S5 r+ x, {6 Y2 k
  45.             c.execute('INSERT INTO Python( Url, Title, Author) VALUES ( "%s", "%s", "%s")' % (% B7 F8 m- E0 k
  46.                 "http://xxx" + content_body.get('href'),3 m5 _/ i! S# O\" O\" }9 t
  47.                 escape(content_body.get('title').replace("\"", "\"\"")),
  48. + y$ x# j# W2 M/ q* j! }8 v                content_infor.text.replace('xxx: ', ''))). ~! ]. F3 _& E/ m9 P. O3 K
  49. % h0 M/ a' ~5 B  K4 N% i* ~9 J
  50.         conn.commit()
  51. 0 l! ]4 Q% i* s* o, |        print("第%s页" % str(i))' W) t( Y1 o' `6 E3 u- M% Q* w1 r' M, _
  52. 7 |& @8 d8 I+ t
  53.     # --------------------Split Line--------------------
  54.   ^, J4 [9 \2 k5 z    conn.close()
  55. 7 D9 E9 k2 n; p4 R9 {

% L  f, J- h) b
& L! B+ t5 u+ B7 ?* }6 }: k
转发自派生社区
Python交流群:1047602540
) U: f2 E! G3 L& A6 z
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 02:17 , Processed in 0.463017 second(s), 50 queries .

回顶部