数学建模社区-数学中国

标题: Python-网页爬虫与Sqlite3 [打印本页]

作者: 檀俾九    时间: 2021-1-14 08:44
标题: Python-网页爬虫与Sqlite3
[code=python]#!/usr/bin/python
; u. g0 }/ c% e! u/ N) K& J5 J% g. H# -*- coding: utf-8 -*-
- W+ r" b7 z4 E' F
; K8 V6 i1 T4 p3 m5 E3 Mimport sqlite3
% s% B6 N4 F3 e, wimport requests* \5 D9 N5 b# C7 h, D! ?# v
from bs4 import BeautifulSoup2 e" J$ {- U# D7 @/ F/ t4 p
from re import escape# s7 j- \) k7 R  u5 I

% W7 m' s) ~! o/ ^, e( ~if __name__ == '__main__':. X8 |+ ?( J5 J8 Z! R2 ^5 @9 g
    conn = sqlite3.connect('Python.db')+ I. h! v+ F5 U( U5 D+ U
    c = conn.cursor()
; O, V% L) L7 p: _9 Z" K    c.execute('''CREATE TABLE IF NOT EXISTS Python (
$ V/ |9 h( W& n& o& z# @6 K        Url VARCHAR," `9 q( ~7 `# b! E# z0 o& L
        Title VARCHAR,
- I+ f! F6 _4 B2 I        Author VARCHAR0 \, T$ ]7 m3 \% l; i7 Z
    )''')
8 E4 q0 d/ e% N    conn.commit()7 X2 V& B) S% t6 V5 e4 v+ |
' r' b4 B: V% N) l1 A& H
    # --------------------Split Line--------------------" ]7 h+ x  d  Q: X2 f! Y
    headers = {
6 O9 t. i. Y* a* A1 k3 {( T$ c        "User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.87 Safari/537.36"& p: Y# Y5 ^7 U$ S: r
    }, A1 n9 W( i# k4 @  m

/ a4 O& z. E1 _9 I0 \1 t    for i in range(1, 1046):
+ Y  B; d- q. U1 n) S+ S8 ~9 z        url = "http://xxx/index_%s.html" % str(i), u+ Z# N8 j8 L7 [9 @& @* j
        req = requests.get(url=url, headers=headers)
+ n9 x  a4 ~' _% T9 a        req.encoding = "utf-8", `6 E+ |( T8 D3 a4 M
        html = BeautifulSoup(req.text, "lxml")
9 M; f- p6 `3 e! z! |
7 n, O& X! j, O! w% D        # --------------------Split Line--------------------/ L& }2 h5 g  J( k" }* [0 s' P# K/ @
        for div in html.find_all('div', class_='loop'):  M1 Q2 L4 c  _: P" Y
            content_body = div.select('h2 > a')[0]3 \$ `! J2 I% O7 G% o- G' w5 a
            content_infor = div.select('.content_infor > span:nth-child(3)')[0]( y* }8 H4 n& b

# [2 t+ Y3 H! S+ ~) ~# h* K            # --------------------Split Line--------------------
+ ^2 d+ [; N5 P# W- f( t1 Z/ v            cursor = c.execute(9 `. r" ~+ `, _8 Z5 O6 _9 u- l
                "SELECT COUNT(*) FROM Python WHERE Url = '%s'" % ("http://xxx" + content_body.get('href')))9 \: Q/ A: o3 h
            len = 0
0 w7 s4 {7 X6 Y1 V2 i4 ~1 U            for row in cursor:
. I( t1 }* P* J/ E5 p  U! T! l4 y                len = row[0]: ?! }5 ^; W2 ^) E# C- E
            if len > 0:
. W% R! J! o" y* a% p& v                continue
* P4 q* E. F! Q# ~' z# s) E
+ H3 S/ {- ^: A$ \            # --------------------Split Line--------------------7 q* N" ]' o  d% J" X9 i
            c.execute('INSERT INTO Python( Url, Title, Author) VALUES ( "%s", "%s", "%s")' % (1 d. u( N! m% A0 x, G
                "http://xxx" + content_body.get('href'),) D% X; ^* Y8 u' l+ ?
                escape(content_body.get('title').replace("\"", "\"\"")),
, ^! l2 `6 z/ S' C0 n1 n) b$ D  n                content_infor.text.replace('xxx: ', ''))); c- c" n- I0 U7 o, l$ N/ ?& o7 v

( p  R: Z8 m& M# ]# t        conn.commit()' ]' S& k" r1 @* ^, [
        print("第%s页" % str(i))3 R5 ?% _! q2 ~) R
9 f3 H/ L/ g" \
    # --------------------Split Line--------------------* j' d  y8 h6 I
    conn.close()
) R2 F9 \- X0 _( w5 Z1 M[/code]* v. |% j5 W) q0 A+ _$ N( u
- X; U! V6 q1 v" n( x
转发自派生社区
Python交流群:1047602540
$ T% s% X# i3 J* P





欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) Powered by Discuz! X2.5