QQ登录

只需要一步,快速开始

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

Python-xpath

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

7

主题

3

听众

10

积分

升级  5.26%

该用户从未签到

自我介绍
我本名为我,那就是我
跳转到指定楼层
1#
发表于 2021-1-18 09:29 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
  1. #!/usr/bin/python% l! k% `8 t8 d4 `! J+ r
  2. # -*- coding: utf-8 -*-
  3. : ]6 m. Q9 N3 k9 b( j' {
  4. 9 E% m' ^/ [$ x/ R  ^import requests
  5. & ]6 j9 S! [- V1 }& H* vfrom lxml import etree
  6. 7 P\" t2 \( `4 d: R# iimport sqlite3. b. e$ q  N7 o

  7. 5 h( n- x. C4 C) q- K; r- m$ U8 c% U1 w( ]3 }& V  h; u' n2 v
  8. def write_sql(c, text):\" e# c5 `! C3 p9 i- `8 i
  9.     html = etree.HTML(text)
  10. 3 K( Q! q# h( Q& y2 ?7 f2 B\" \8 B5 I    # 标题
  11. 8 t( K$ d5 ^% ]6 T    titles = html.xpath('//ul[@class="news"]//a[@target="_blank"]/p/text()')1 d1 C) T; ^\" Q/ ~! E: T( I
  12.     # 链接$ ~: |/ G, r# `\" L1 s! f# x
  13.     hrefs = html.xpath('//ul[@class="news"]//a[@target="_blank"]/@href')7 A% u( s5 m\" p
  14.     # 日期7 x+ B6 Y+ P4 D9 k\" [- p
  15.     ems = html.xpath('//ul[@class="news"]//a[@target="_blank"]/em/text()')
  16. 0 X# r\" v1 u; p6 C3 H6 o+ P, a; S5 I
  17.     number = 00 l, e2 E# R3 ?2 K
  18.     for title, href, em in zip(titles, hrefs, ems):
  19. / \4 f6 C+ A6 A1 i. A        href = host + href
  20. . R: T3 M- f9 @; I4 b: m% u        cursor = c.execute(0 {$ W: H( F# P* s! Y. N
  21.             "SELECT COUNT(*) FROM Python WHERE Url = '%s'" % href)
  22. & b# A0 J2 E5 x  V. T- a; k4 b        res = c.fetchall()( h9 I& g2 B8 f; m7 I
  23.         # 判断该字段是否已存在1 {) o$ Z6 r! H
  24.         if res[0][0] > 0:1 c$ e& ^% U. M% J
  25.             continue- a2 |% U0 n% c/ K7 `

  26. / F/ Y: A& J% I        c.execute('INSERT INTO Python( Url, Title, Author) VALUES ( "%s", "%s", "%s")' % (9 `( `( R2 x( n, |\" p1 |' e( ]) s8 ^
  27.             href,2 y8 h/ m& b. M2 B
  28.             title.replace("\"", "\"\""),
  29. # h% J+ @% B4 A; x            em))1 a. Q. Y! @\" W
  30.         number += 19 R' I  m5 t1 \  C# j, v( |1 H3 s0 I
  31.         print(title, href, em)( A% w1 r  p. w, C! ~7 g& c

  32. 1 h7 d1 g) r) {    conn.commit()
  33. ! A9 C& b- ?+ G+ R# ^( Z9 v; V4 w\" ?    return number > 0
  34. + H8 Z4 {8 i1 V. [0 \1 J0 \) O
  35. 2 m4 L8 o7 X7 d* k$ C2 j) F% d
  36. if __name__ == '__main__':
  37. ; I( w! D: Z\" z1 w: J6 N9 @3 P
  38. ; E\" d+ |* L& @6 {3 J& b    conn = sqlite3.connect("Python-xxx.db")7 v. @+ h7 I/ r* r0 O
  39.     c = conn.cursor()
  40. - G- t; q\" u' x& b    c.execute('''CREATE TABLE IF NOT EXISTS Python (
  41. ) j# Y' g. H9 }# x8 L9 g        Url VARCHAR,; K\" }- i8 y' H$ @$ R
  42.         Title VARCHAR,
  43. % y. M7 `  y1 q1 e( M, Z/ E$ m8 j        Author VARCHAR
  44. 3 G) c\" J' v$ C4 w    )''')5 W, B2 D& C; H8 c, `
  45.     conn.commit()
  46. 6 P- T* L3 w  }/ _3 R
  47. 6 d1 B1 L\" W  b0 Y% U5 e- c    host = "https://xxx"
  48. ( t4 m* c2 a# K\" j5 A' A% O4 b    url = host + "/xxx", Y  _\" {2 f* N1 w( ^
  49.     req = requests.get(url)) }: K  o) d! S5 {, @7 M* w6 f4 y% k
  50.     req.encoding = 'utf-8'
  51. ' X# f4 f4 q+ \5 A9 X$ c: t1 a    # print(req.text)
  52. 3 v\" B- ^$ o- F+ P0 b( \, L/ Y  Q9 r+ }0 \
  53.     html = etree.HTML(req.text)$ Q9 s\" Q+ I, c
  54.     clearfixs = html.xpath('//*[@class="nav clearfix"]//a[starts-with(@href, "/cate/")]/text()')
  55. ( Q* H7 S3 t0 y* k% ~0 g: j    hrefs = html.xpath('//*[@class="nav clearfix"]//a[starts-with(@href, "/cate/")]/@href')
  56. 5 I+ y, T& C9 j1 q6 x( C% \- B: X    # print(clearfix, href)
  57. ! y9 T. T+ u; Z4 Y
  58. * c3 a$ l5 j; {$ ^6 j    for clearfix, href in zip(clearfixs, hrefs):
  59. & @5 H( l8 V5 B: g/ J) H        print(clearfix, host + href)
  60. 8 C# J# I8 S+ H2 L5 v( T( P$ M( T, y4 d; d$ G8 U) t) e
  61.         page = 10 Y\" T- M  Q: B* I9 a
  62.         while True:
  63. ) |3 H: `2 B1 {% _* @  E& q$ T            url = host + href + "/list_%s.html" % page
  64. / g2 [8 U  a2 S% q            req = requests.get(url)
  65. - }. g- I0 q- A2 |2 |! r\" G            req.encoding = 'utf-8'
  66. \" h) q+ n! i: Y! |
  67. 4 N# b9 l* o8 A            if (not write_sql(c, req.text)):
  68. * j! J2 j8 \6 }                break$ [! K9 @4 G; _( L$ J
  69. ' k5 i/ u# ^\" a0 s2 ?6 d$ Q. z
  70.             print("第%s页" % page)6 M! `- M\" y4 c& [6 V
  71.             page += 1# O2 S! v, c/ V
  72.   K9 _4 L7 Y2 o. ^* p  H2 e7 a8 I3 A
  73.     conn.close()
  74. 7 H% R- c' w: Q
- b$ p$ |/ n+ F
xpath用着就是舒服~3 R2 G8 u$ t, u% {

& {4 j% w$ |4 u
转发自派生社区
Python交流群:1047602540

9 n+ C$ \$ x: f1 X& m: Z+ v- y$ A4 {, V# O9 ]5 _
5 n% r$ O& O+ {3 [; }3 O
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-10-17 07:43 , Processed in 0.657532 second(s), 50 queries .

回顶部