QQ登录

只需要一步,快速开始

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

Python-网页爬虫与Sqlite3

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

7

主题

3

听众

10

积分

升级  5.26%

该用户从未签到

自我介绍
我本名为我,那就是我
跳转到指定楼层
1#
发表于 2021-1-14 08:44 |只看该作者 |正序浏览
|招呼Ta 关注Ta
  1. #!/usr/bin/python
  2. 7 M. ]& A2 w0 \& X+ v- N$ t# -*- coding: utf-8 -*-
  3. \" Z6 A( R3 q! R8 |9 W- v+ ]9 ^0 U, [0 Q8 J! ~8 Q
  4. import sqlite3/ p\" M2 f- B# @' \7 u' j
  5. import requests5 i- S/ K; ?& N! I# Q! [
  6. from bs4 import BeautifulSoup
  7. ( N0 H; x: Q* w$ wfrom re import escape4 N7 u  t# t0 j  q& ~5 c2 S% e

  8. - h\" o/ w+ @& k9 D7 Qif __name__ == '__main__':
  9. - X0 E\" \5 I  x4 q) o8 ^  \: X    conn = sqlite3.connect('Python.db')8 h) Y- g: {2 ?% J& w, ~+ c
  10.     c = conn.cursor()
  11. ! [1 d( J1 d0 n  X$ b0 `6 _+ y    c.execute('''CREATE TABLE IF NOT EXISTS Python (
  12. $ z$ ?; p# Y7 w# r( `# O        Url VARCHAR,
  13. * o' p6 h9 F5 O) I- Y; j0 |2 ]        Title VARCHAR,
  14. - l\" S% P; q9 C1 |        Author VARCHAR1 \1 h% Q' z; O; [+ x& E
  15.     )''')
  16. ' ^9 r4 a, B- A* [, Z, Q( q. R    conn.commit()' n1 T% B3 m4 F* N

  17. 8 n1 e$ c0 \& c    # --------------------Split Line--------------------- ?! Q( Q* [% d+ a
  18.     headers = {/ z! o9 y8 a/ t2 p
  19.         "User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.87 Safari/537.36"
  20. , U0 W5 t* _3 ~+ l* j7 ^    }
  21. # l5 h, Z$ k, o  L, G- I( h# w2 t1 b\" d' z& m/ L
  22.     for i in range(1, 1046):* z- R7 ?: P1 D! e) j0 a1 j! Q
  23.         url = "http://xxx/index_%s.html" % str(i)
  24. ! G9 j: B' x4 \) P3 A* s) f        req = requests.get(url=url, headers=headers)8 P6 C$ w4 e! }0 ?, S* q  A
  25.         req.encoding = "utf-8"/ W* |$ m& z3 l# K  P
  26.         html = BeautifulSoup(req.text, "lxml")
  27. , c$ c0 r& ?$ q3 e, }# o
  28. : G4 G% Z9 V6 R' j4 I/ a        # --------------------Split Line--------------------8 v8 a( I6 W3 O, u* ^
  29.         for div in html.find_all('div', class_='loop'):9 q2 i& m  j$ D9 c\" C4 d4 k( q
  30.             content_body = div.select('h2 > a')[0]
  31. % @' Q0 X7 E% I1 b            content_infor = div.select('.content_infor > span:nth-child(3)')[0], @5 Q. L6 R1 i

  32. \" ~# U6 y+ X- y1 p, y: D& h; }            # --------------------Split Line--------------------
  33. \" a! L, l' f9 a4 S9 w/ W5 H            cursor = c.execute(8 ~& M! E: Q9 e4 q8 l) [
  34.                 "SELECT COUNT(*) FROM Python WHERE Url = '%s'" % ("http://xxx" + content_body.get('href')))3 y, c; k9 ]& d! ^% f) Y- l
  35.             len = 04 B9 L3 I/ Y! `* Z3 z. G
  36.             for row in cursor:- s0 s& m- m6 `
  37.                 len = row[0]
  38. 4 C/ {5 q& c1 |0 V1 |) w' x            if len > 0:+ m0 R2 ?( S' v+ ^5 v
  39.                 continue( \3 l$ n' x4 P, M- w- k

  40. & Z8 a0 M/ `, K# C% g9 K, O' V            # --------------------Split Line--------------------$ W' E: U/ @8 X& J
  41.             c.execute('INSERT INTO Python( Url, Title, Author) VALUES ( "%s", "%s", "%s")' % (
  42. * S1 `; r) v3 q+ g/ O                "http://xxx" + content_body.get('href'),/ l5 D\" P. o! X9 v
  43.                 escape(content_body.get('title').replace("\"", "\"\"")),2 d\" c9 E7 E; Z. g3 c, A& k) O( e
  44.                 content_infor.text.replace('xxx: ', '')))% b- v' r4 ?! a

  45. 4 }+ m/ a) a, K/ R        conn.commit()
  46. 2 z7 Y4 h( T) U        print("第%s页" % str(i))
  47. \" ^( z& F4 E0 T/ _* w* T3 Z& {, j\" X! s- h- E7 _& y! {
  48.     # --------------------Split Line--------------------% D: S! O, B& M$ J* `, P( J\" C
  49.     conn.close()
  50. & K7 Y5 ^8 v7 }
, X1 q8 H2 N# h, x: \( R# S: y+ F
. w: S! m* t) z3 k. B9 w" _; @! J
转发自派生社区
Python交流群:1047602540

# C4 O* ~! M0 ^8 j
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-4-19 13:37 , Processed in 0.460934 second(s), 50 queries .

回顶部