QQ登录

只需要一步,快速开始

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

Python-xpath

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

7

主题

3

听众

10

积分

升级  5.26%

该用户从未签到

自我介绍
我本名为我,那就是我
跳转到指定楼层
1#
发表于 2021-1-18 09:29 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
  1. #!/usr/bin/python
  2. ( ~6 }3 u0 H\" o\" ]  L# -*- coding: utf-8 -*-/ k5 c* C+ I* S' t\" J$ @
  3. 3 _5 O* m3 B0 `
  4. import requests) b; N/ M) V. y\" }( ]
  5. from lxml import etree
  6. 7 E) `6 u& w' oimport sqlite3
  7. . A2 [9 Y$ e- [, h$ f; ^# {, q/ W' M4 e+ ?
  8.   M0 e2 l( T+ W6 m8 L
  9. def write_sql(c, text):
  10. 0 z$ U  a. @  M5 z  n# `    html = etree.HTML(text)
  11. 1 P; T0 C4 X, q) A, l    # 标题
  12. & g, l& M4 a/ ~1 `    titles = html.xpath('//ul[@class="news"]//a[@target="_blank"]/p/text()')
  13. 9 E\" U2 e* O. j  m* r    # 链接* ], R6 o$ d# z# q& t
  14.     hrefs = html.xpath('//ul[@class="news"]//a[@target="_blank"]/@href')
  15. + x\" C  X: K; I' z, m    # 日期3 ~6 i, V! `1 M5 {/ U
  16.     ems = html.xpath('//ul[@class="news"]//a[@target="_blank"]/em/text()')
  17. ( z0 g. Y( i' C7 h3 U- x2 z0 |2 @/ V
  18.     number = 0( ]. @: m4 G$ B4 r# Y' _4 F
  19.     for title, href, em in zip(titles, hrefs, ems):
  20. ; h2 \- Q, F0 D        href = host + href
  21. ' ~5 g. M- T5 o0 g* k5 L        cursor = c.execute(* |7 |( }9 C7 g$ h  t, C
  22.             "SELECT COUNT(*) FROM Python WHERE Url = '%s'" % href)
  23. / }1 w- j5 o+ |9 m9 O        res = c.fetchall()
  24.   z\" i, c% @9 F# A; {        # 判断该字段是否已存在
  25. 0 I4 n. K( n* @3 P        if res[0][0] > 0:; g) M9 U& W2 s
  26.             continue0 g9 \6 C\" o, r+ t; R! R
  27. ; N6 @6 h/ Z2 x: A# D; H+ ?1 J! M
  28.         c.execute('INSERT INTO Python( Url, Title, Author) VALUES ( "%s", "%s", "%s")' % (, d/ Y7 F( [( i6 `
  29.             href,
  30. 5 E( W, G' R  L& E: C$ v% @            title.replace("\"", "\"\""),! z- @  N, i1 c. d) H5 t
  31.             em))
  32. , l/ t6 b& H\" E+ T\" w        number += 1
  33. 7 |2 h- H2 r. v        print(title, href, em); S$ o8 V+ K; w% H) Q2 k
  34. 8 ?. t. a$ i\" M$ X
  35.     conn.commit()* g3 D  U$ D: ~  G& q6 T7 D- [; ?
  36.     return number > 02 i\" n2 a: j  s  u) u
  37. $ R: {$ I6 w/ Z/ X% s% `; y

  38. 1 J( E# S# B\" s; Iif __name__ == '__main__':
  39. # A\" R- n7 e3 N0 B/ N
  40. ( X0 m$ _! M; V$ g- X    conn = sqlite3.connect("Python-xxx.db")/ a1 Z$ b0 s) |7 s\" \8 t! \
  41.     c = conn.cursor()
  42.   B/ X/ {  y' q1 _' J    c.execute('''CREATE TABLE IF NOT EXISTS Python (
  43. , C- J1 @. z$ I  `& l\" @        Url VARCHAR,: }* J) g) l0 [3 u
  44.         Title VARCHAR,
  45. 2 F; C& v5 }7 ?- H5 F  e* j        Author VARCHAR
  46. 5 ^! P* ?9 F+ B    )''')6 O. g1 p& l3 z, ^2 N
  47.     conn.commit()
  48. % y' h' s, ~( O6 C. P
  49. & o/ Q9 m, f( }2 Z    host = "https://xxx"0 J, {0 }+ @6 Q4 K& N
  50.     url = host + "/xxx"
  51. 2 j' l  S) d6 |% A8 O5 u    req = requests.get(url)1 `% ?) a' U* R( j9 L$ L# ~* h
  52.     req.encoding = 'utf-8'
  53. 6 [, M/ B$ D1 F7 e0 q    # print(req.text)0 D6 Y) x, y6 ]0 q
  54. 8 z% n- W6 G/ m0 S4 E+ d4 b7 o
  55.     html = etree.HTML(req.text)0 x8 N7 D; @0 T6 x4 e8 I2 }  c! E
  56.     clearfixs = html.xpath('//*[@class="nav clearfix"]//a[starts-with(@href, "/cate/")]/text()')( N6 _0 o9 i# W
  57.     hrefs = html.xpath('//*[@class="nav clearfix"]//a[starts-with(@href, "/cate/")]/@href')
  58. \" @0 h  P- @# C0 B+ t. d/ D    # print(clearfix, href)
  59. % o0 X: r0 h5 y\" {1 j. _, [9 M( C& _, o5 T% n( B
  60.     for clearfix, href in zip(clearfixs, hrefs):7 L5 v' J2 K$ Z8 ]
  61.         print(clearfix, host + href)
  62. ! o% Q' p! D7 [6 q
  63. ( ]% K; D, T& ^- y- x        page = 17 {' L& k6 L9 F9 ^2 D5 O- u! R2 P
  64.         while True:: R7 z% o# t4 `
  65.             url = host + href + "/list_%s.html" % page
  66. 3 j8 D\" K4 [7 [3 |1 X% ~2 p            req = requests.get(url)4 A3 O. J2 [+ X6 R' N
  67.             req.encoding = 'utf-8'
  68. ( }# i* I$ }3 m& y. n: w* d# \8 \  |& a, H8 f7 S8 k3 a
  69.             if (not write_sql(c, req.text)):
  70. $ e/ |7 T# a( x; v7 {                break
  71. 3 ^! Q- |: e( j1 [6 o' ~- q( [$ {- J% Y
  72.             print("第%s页" % page)* F; \6 l; e/ H$ a
  73.             page += 1
  74. # ^8 m3 I, E; I$ x; m2 h) U: O- s2 ~8 I: r
  75.     conn.close()6 X, ]\" }! f- ~  V\" L' U7 p* Q$ D

+ M5 W- g* Y4 W( N) p4 _" }7 xxpath用着就是舒服~
% V4 @# Y% s" Z4 O2 \& H  B
3 p# o& h( b" D' I/ H5 M
转发自派生社区
Python交流群:1047602540

- T2 T2 u/ b/ `" U
% f8 {/ m7 q( ~6 P( r6 c
* V1 u5 ^2 l2 O+ P" M
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-18 06:48 , Processed in 0.340678 second(s), 50 queries .

回顶部