请选择 进入手机版 | 继续访问电脑版

QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 322|回复: 0

Python-网页爬虫与Sqlite3

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

4

主题

3

听众

7

积分

升级  2.11%

该用户从未签到

自我介绍
我本名为我,那就是我
发表于 2021-1-14 08:44 |显示全部楼层
|招呼Ta 关注Ta
  1. #!/usr/bin/python
  2. ( X% G- y0 b, I8 F8 O8 I8 {) k# -*- coding: utf-8 -*-
  3. * t/ |/ X6 X# A
  4. & U& T; [! @% F( [\" f; Nimport sqlite3
  5. . d# |( I- E% T' Uimport requests, @0 \3 w4 z\" _  `$ ]. F
  6. from bs4 import BeautifulSoup
  7. 4 |) W: l1 k+ y! X( {1 D* ifrom re import escape
  8. ! E. X7 r) f  [- p9 S  L2 ~\" [1 e8 i; n7 B8 Q; U
  9. if __name__ == '__main__':
  10. * B' C5 v8 m8 q* E* ?: [    conn = sqlite3.connect('Python.db')
  11. ' _- F3 x* S/ n    c = conn.cursor()# B2 F) W( Q5 H1 W4 w: Z7 D
  12.     c.execute('''CREATE TABLE IF NOT EXISTS Python (& W9 z( _$ o! \
  13.         Url VARCHAR,0 r/ u/ _* {6 Q! {
  14.         Title VARCHAR,
  15. : T1 ^, w1 g) `        Author VARCHAR% P+ B1 K& i0 u( x
  16.     )''')9 ^2 ]+ ^6 S/ C) d- T, ^
  17.     conn.commit()3 N1 N9 L% k7 x# h9 r- s

  18. / g( t\" i- t0 X# G* K    # --------------------Split Line--------------------
  19. + C  ~\" F: p; q$ k# E    headers = {' V: w/ l7 g( |3 s+ G
  20.         "User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.87 Safari/537.36"6 k# p# B) p/ u# ~3 p
  21.     }
  22. : T& o  b# L2 g\" [/ W\" d. T/ G: w+ I' U% Y& |% I
  23.     for i in range(1, 1046):  D+ Q! y* |- r. @
  24.         url = "http://xxx/index_%s.html" % str(i)  u! A' y2 E. a4 _) l
  25.         req = requests.get(url=url, headers=headers)& u/ `9 m( X: R8 C9 o4 r% k8 e
  26.         req.encoding = "utf-8"$ t- E) `/ u+ `$ F- e: B
  27.         html = BeautifulSoup(req.text, "lxml")% G* h+ L# G& |3 ^( ?; M# S0 l

  28. 2 R/ V8 W+ _$ v* g        # --------------------Split Line--------------------
  29. 3 y( v/ p! p1 w. b# I3 \- p6 o        for div in html.find_all('div', class_='loop'):( i# \/ }# r, w. p+ a3 k% t
  30.             content_body = div.select('h2 > a')[0]
  31. 0 M# B2 F: v- N: Z0 H' X- \5 l            content_infor = div.select('.content_infor > span:nth-child(3)')[0]9 r- L) f8 G  u9 A$ Z

  32. 3 x3 p8 L+ f. P5 d            # --------------------Split Line--------------------
  33. $ a. m% \. i6 J6 A, x3 k+ U            cursor = c.execute(- K* v8 A' o- r5 W5 t$ `\" y
  34.                 "SELECT COUNT(*) FROM Python WHERE Url = '%s'" % ("http://xxx" + content_body.get('href')))0 j! i; m) M7 h& ~7 v6 Z
  35.             len = 0
  36. 4 p, l\" E+ p\" E- y3 T            for row in cursor:( |' C: a& l4 A' Z- `
  37.                 len = row[0]
  38. ( e\" H& Z5 M4 Y/ o! I            if len > 0:\" p! N\" n8 O. G
  39.                 continue# J7 K$ b1 h( _8 K: g3 v& l

  40. ! D0 q( C1 z* t1 t: K\" _) x! q' x            # --------------------Split Line--------------------
  41.   o4 q; {. S\" T% Z+ v            c.execute('INSERT INTO Python( Url, Title, Author) VALUES ( "%s", "%s", "%s")' % (
  42. & I7 _' y8 s8 g' ^                "http://xxx" + content_body.get('href'),
  43. % x1 T0 P7 c' R+ R8 m                escape(content_body.get('title').replace("\"", "\"\"")),
  44. 1 V6 @  z) q, y1 d5 U; {( ~* A) h: Z                content_infor.text.replace('xxx: ', '')))
  45. 4 W, s5 b- \8 `9 M* n$ N2 q4 V) c; X* O% R\" c. I% J' Y/ W
  46.         conn.commit()
  47. $ |# ~: u7 W! d0 E4 ]\" K        print("第%s页" % str(i))1 ?, s& H- Z! }5 A. P\" @4 I1 O
  48. 0 y4 s: Z9 A9 C  D- @5 [# e
  49.     # --------------------Split Line--------------------\" t' e( [& _4 C* `) G
  50.     conn.close()4 Q3 H# ~\" S0 _6 T$ n7 P

9 p8 O" E* |; A3 e+ V8 {. H. X. [7 U
转发自派生社区
Python交流群:1047602540
  d& _6 ]5 O6 j; H- F* V) S
zan
您需要登录后才可以回帖 登录 | 注册地址

qq
收缩
  • 电话咨询

  • 04714969085
fastpost

关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

手机版|Archiver| |繁體中文 手机客户端  

蒙公网安备 15010502000194号

Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

GMT+8, 2021-2-28 00:06 , Processed in 0.701798 second(s), 51 queries .

回顶部