QQ登录

只需要一步,快速开始

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

Python-网页爬虫与Sqlite3

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

7

主题

3

听众

10

积分

升级  5.26%

该用户从未签到

自我介绍
我本名为我,那就是我
跳转到指定楼层
1#
发表于 2021-1-14 08:44 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
  1. #!/usr/bin/python
  2. ( x\" F9 w: W+ C$ e9 e. v0 T. X# -*- coding: utf-8 -*-
  3. * z# L\" f- `% ]. z/ P& y: o4 Q- B. V. I
  4. import sqlite3* A* T7 _5 k: b\" ?
  5. import requests' N# O8 [. _3 P3 p. {$ r
  6. from bs4 import BeautifulSoup- m) ~8 I, f: ~0 Z; @8 d9 z
  7. from re import escape
  8. 9 m3 c$ _4 }. Q3 w  R, q
  9. ) H' J' K% t# Y7 z' z3 Jif __name__ == '__main__':% b$ c$ R1 X$ k8 M$ J\" s
  10.     conn = sqlite3.connect('Python.db')
  11. ) y5 z3 N0 y- N3 N# @    c = conn.cursor()( R+ f3 A\" h- j6 C9 K
  12.     c.execute('''CREATE TABLE IF NOT EXISTS Python (
  13. / G6 w% T1 I8 P3 d/ w        Url VARCHAR,& r) B7 D\" Z+ S  u, A
  14.         Title VARCHAR,7 t' n! x6 ?& s$ i* t2 o2 i
  15.         Author VARCHAR6 t! J; n4 T3 i6 t6 T+ A
  16.     )'''): U. v# t\" [9 K3 C
  17.     conn.commit()2 P4 c) m6 e! i: ^+ F$ ^6 l

  18. ( Q+ r  U5 n% J; A/ f! \    # --------------------Split Line--------------------
  19. / f. a! A$ ~& f/ d4 m- H: m  H    headers = {
  20. ; T* g\" |( y& f9 A5 W3 b% a9 D; A        "User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.87 Safari/537.36"+ R/ R: j- l7 T: B* {
  21.     }( a# G\" Q: w! r
  22. , H' ?, b$ B5 T# l) r
  23.     for i in range(1, 1046):
  24. 4 }% b7 j$ C$ ?; `- N        url = "http://xxx/index_%s.html" % str(i)) {: s8 r4 Z: O\" v
  25.         req = requests.get(url=url, headers=headers)9 w+ h9 W8 k+ ^3 {
  26.         req.encoding = "utf-8"$ `1 O' z: s) J9 i2 i
  27.         html = BeautifulSoup(req.text, "lxml")
  28. ' S% v. N. Q. k  E* _* R  f  X* s; d2 _2 t1 c& ~
  29.         # --------------------Split Line--------------------
  30. ! c! K, U2 ?+ _( E\" D' h7 U! [\" R: \        for div in html.find_all('div', class_='loop'):
  31. $ H: s7 o* r, Y- C+ ~* }            content_body = div.select('h2 > a')[0]
  32. * |4 y8 x# H& L: |9 H* n            content_infor = div.select('.content_infor > span:nth-child(3)')[0]: f: O* p' B7 M) n5 c; O0 D

  33. : }# ?7 ~% W, c5 {$ }            # --------------------Split Line--------------------
  34. 3 D0 S5 y- t' q8 N2 y            cursor = c.execute(
  35. 8 n4 D, V$ _, }. w                "SELECT COUNT(*) FROM Python WHERE Url = '%s'" % ("http://xxx" + content_body.get('href')))
  36. % Q3 E: _% m\" r5 b3 r, g: i            len = 0
  37. ) X! v8 a* S% B            for row in cursor:, G* J3 z, ^0 N' Q- \( r% M
  38.                 len = row[0]; j) g1 T6 w\" A9 j& l; `$ J6 p
  39.             if len > 0:  b; P. }9 ]7 v: }- j9 }/ a/ D
  40.                 continue
  41. - F7 V& ?- O8 T3 E- \$ J, J4 q8 z5 j% S* \
  42.             # --------------------Split Line--------------------. B- Q/ G' F- E, r7 V1 \
  43.             c.execute('INSERT INTO Python( Url, Title, Author) VALUES ( "%s", "%s", "%s")' % (! ^) c; b3 j: C6 c8 P\" n, k6 k\" Q
  44.                 "http://xxx" + content_body.get('href'),* S  V9 v6 C\" D: `5 N9 {
  45.                 escape(content_body.get('title').replace("\"", "\"\"")),* a4 S: k6 U: Z
  46.                 content_infor.text.replace('xxx: ', ''))), z# E5 S- C5 m! t9 E* r
  47. ; j% V/ k6 G8 @' @
  48.         conn.commit()
  49. # D( x7 D8 K  e$ E9 c& [2 M1 V2 X        print("第%s页" % str(i))- V& O3 }. [& j3 ~$ F& Q6 J8 ], ?6 H

  50. 4 a% Y/ r% I  }9 P1 `+ M5 f4 Z+ ~    # --------------------Split Line--------------------
  51. 3 U3 _( y! v; P# c    conn.close()
  52. 2 e7 L$ v; c+ g. H0 z

# I$ Z6 a( _8 }7 ]
* _: e" K# r, l, P* o5 F1 t( N
转发自派生社区
Python交流群:1047602540

  L1 V( R# E$ Z4 V: _
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-7-18 11:11 , Processed in 0.447354 second(s), 49 queries .

回顶部