如何写爬虫程序爬取豆瓣网或者新浪微博里的内容

发布网友 发布时间:2022-04-21 17:50

我来回答

2个回答

懂视网 时间:2022-04-10 06:47

import pymysql
import requests
from bs4 import BeautifulSoup
baseUrl = "https://movie.douban.com/top250?start=%d&filter="
def get_movies(start):
 url = baseUrl % start
 lists = []
 html = requests.get(url)
 soup = BeautifulSoup(html.content, "html.parser")
 items = soup.find("ol", "grid_view").find_all("li")
for i in items:
 movie = {}
 movie["rank"] = i.find("em").text
 movie["link"] = i.find("div","pic").find("a").get("href")
 movie["poster"] = i.find("div","pic").find("a").find(‘img‘).get("src")
 movie["name"] = i.find("span", "title").text
 movie["score"] = i.find("span", "rating_num").text
 movie["quote"] = i.find("span", "inq").text if(i.find("span", "inq")) else ""
 lists.append(movie)
return lists

if __name__ == "__main__":
 db = pymysql.connect(host="192.168.1.210",port=3306,user="root",password="ubuntu",db="mysql",charset="utf8mb4")
 cursor = db.cursor()
 cursor.execute("DROP TABLE IF EXISTS movies")
 createTab = """CREATE TABLE movies(
 id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
 name VARCHAR(20) NOT NULL,
 rank VARCHAR(4) NOT NULL,
 link VARCHAR(50) NOT NULL,
 poster VARCHAR(100) NOT NULL,
 score VARCHAR(4) NOT NULL,
 quote VARCHAR(50)
 ) character set = utf8"""
 cursor.execute(createTab)
 start = 0
 while (start < 250):
 lists = get_movies(start)
for i in lists:
  sql = "INSERT INTO movies(name,rank,link,poster,score,quote) VALUES(%s,%s,%s,%s,%s,%s)"
  try:
  cursor.execute(sql, (i["name"], i["rank"], i["link"], i["poster"], i["score"], i["quote"]))
  db.commit()
print(i["name"]+" is success")
except:
  db.rollback()
 start += 25
 db.close()

  

爬取豆瓣,写入数据库

标签:except   list   parser   pen   https   ==   爬取   img   title   

热心网友 时间:2022-04-10 03:55

  在面向对象的高级语言中,早已有人将http请求封装成了类库,你只需要调下接口,就能获得目标网页的源码。所以程序需要做的就是请求目标url,获取页面的源码,解析html。基本流程是:
  获取目标页面源码,方法:调用对应的类库。
  解析html文件,提取出自己想要的信息。方法:正则表达式或者解析html的库。

  按照上述步骤,C++(Qt)涉及的类是:
  WebView,它的内核其实就是webkit,所以它就是一个功能原始的浏览器,他内置能够返回页面源码的函数,接受一个url的string类型参数,返回一个QString对象。
  WebView类有方法能够处理DOM。
  C#(.net)涉及的类是:
  WebClient,WebRequest,HttpWebRequest等类,第一个封装得比较高级,写法简单,后面两个封装得低级,写起来麻烦但是用起来灵活,HttpWebRequest是WebRequest的一个子类。
  Html Agility Pack。
  Python涉及的包是:
  urllib,urllib2,前者仅可以接受URL,不能伪装Header,但是需要用它的一个函数对post数据进行编码。类似于浏览器的有Selenium。
  BeautifulSoup。
  上面三种相比,python写法最简单,操作也灵活,要获取源码只要写一句话就行。字符串处理python也毫不逊色于C#和C++。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com