数据采集第一次作业

作业已上传gitee:https://gitee.com/chen-gaofei/crawl_projects

作业第一题

要求:用requests和BeautifulSoup库方法定向爬取给定网址(http://www.shanghairanking.cn/rankings/bcur/2020) 的数据,屏幕打印爬取的大学排名信息。
代码https://gitee.com/chen-gaofei/crawl_projects/blob/master/作业1/.爬取大学排名.py
运行结果截图

心得体会:这题是之前作业里做过的,相对简单。做这道题的过程中对html的结构有了更深刻的理解。

  • 发送HTTP请求并获取网页内容:
    • 使用urllib.request.urlopen(url)发送HTTP请求,并使用response.read()读取网页内容。
    • 使用BeautifulSoup解析网页内容:
  • 查找包含表格数据的元素:
    • table = soup.find('table'):在解析后的HTML中查找第一个标签,即包含表格数据的元素。
    • 获取所有表格行:
      • table_rows = table.find_all('tr'):获取表格中的所有
    • 标签,即表格的每一行。
    • 遍历表格行并提取数据:
      • for row in table_rows[1:]:跳过第一行(通常是表头),遍历剩余的每一行。
      • columns = row.find_all('td'):获取当前行的所有<td>标签,即单元格。
      • ‘’‘rank = columns[0].get_text(strip=True)等:从每个单元格中提取文本内容,并去除多余的空格。
    • 作业第二题

      要求:用requests和re库方法设计某个商城(自已选择)商品比价定向爬虫,爬取该商城,以关键词“书包”搜索页面的数据,爬取商品名称和价格。
      代码https://gitee.com/chen-gaofei/crawl_projects/blob/master/作业1/爬取商品名称和价格.py
      运行结果截图:

      心得体会

      • 完成这个作业的过程中能更好地掌握正则表达式的运用,并且在这个过程中需要对html结构有一定了解,才能更快地完成作业。
      • 设置关键词并构造搜索URL:search_url = f"http://search.dangdang.com/?key={urllib.parse.quote(search_term)}&act=input&page_index=1"
      • 发送请求并获取网页响应:
        req = urllib.request.Request(search_url)
        resp = urllib.request.urlopen(req)
        web_content = resp.read()
      • 使用正则表达式来匹配商品标题和价格:
        regex = re.compile(r'<a[^>]*title="([^"]*)".*?<span class="price_n">([^<]+)</span>', re.S)

      作业第三题

      要求:爬取一个给定网页( https://news.fzu.edu.cn/yxfd.htm)或者自选网页的所有JPEG和JPG格式文件
      代码https://gitee.com/chen-gaofei/crawl_projects/blob/master/作业1/爬取指定网址指定格式图片.py
      运行结果截图

      心得体会

      • 这个作业主要是熟悉html中的标签及其运用。
      • 定义网页URL和下载目录:
        url = "https://news.fzu.edu.cn/yxfd.htm"
        download_directory = "D:\code\crawls\pictures"
      • 创建下载目录(如果不存在)
        if not os.path.exists(download_directory):
        os.makedirs(download_directory)
      • 发送请求并获取网页内容
        response = urllib.request.urlopen(url)
        html_content = response.read()
        • 使用urllib.request发送HTTP请求,获取网页内容。
      • 使用BeautifulSoup解析网页内容
        soup = BeautifulSoup(html_content, 'html.parser')
        • 使用BeautifulSoup解析网页内容,以便进一步提取信息。
      • 查找所有的标签
        `- img_tags = soup.find_all('img')
      • 提取所有的JPEG和JPG格式的图片链接
      for img_tag in img_tags:
          img_url = img_tag.get('src')
          if img_url and (img_url.lower().endswith('.jpg') or img_url.lower().endswith('.jpeg')):
              if not img_url.startswith('http'):
                  img_url = urllib.parse.urljoin(url, img_url)
              image_urls.append(img_url)
      

      遍历所有的标签,提取src属性值(即图片链接)。
      检查图片链接是否以.jpg或.jpeg结尾。
      如果图片链接是相对路径,转换为绝对路径。
      将符合条件的图片链接添加到image_urls列表中。

      • 下载并保存图片
          img_response = requests.get(img_url)
          img_name = os.path.join(download_directory, f'image_{idx + 1}.jpg')
      
          with open(img_name, 'wb') as f:
              f.write(img_response.content)
      
          print(f"Downloaded: {img_name}")
      

      遍历image_urls列表,使用requests库发送HTTP请求,获取图片内容。
      构造图片的本地文件名,并保存到指定的下载目录中。

posted @ 2024-10-15 19:41  Valerie2077  阅读(8)  评论(0编辑  收藏  举报