python BS4获取href网址

近期看那个scrape章节。有个s_urls[0][‘href‘]  没法理解。以为python 有非数字下标数组。后面多方查询才知道这个是beautifulsoup 中的tag查询

https://stackoverflow.com/questions/5815747/beautifulsoup-getting-href?noredirect=1&lq=1

from bs4 import BeautifulSoup
# what does Thread means
from threading import Thread
import urllib.request

#Location of restaurants
home_url="https://www.yelp.com"
find_what="Restaurants"
location="London"

#Get all restaurants that match the search criteria
#https://www.yelp.com/search?find_desc=Restaurants&find_loc=London
search_url="https://www.yelp.com/search?find_desc=" +find_what+"&find_loc="+location
s_html= urllib.request.urlopen(search_url).read() #urlopen(search_url).read()
print("here")
soups_s=BeautifulSoup(s_html,"lxml")

#Get URLs of top 10 Restaurants in London
s_urls=soups_s.select(‘.biz-name‘[:10])
print(len(s_urls))
print(s_urls)
url=[]
print(type(s_urls))
print(type(s_urls[0]))
print(s_urls[0])
print(s_urls[0][‘href‘])
for u in range(len(s_urls)):
    url.append(home_url+s_urls[u][‘href‘])
#https://www.yelp.com/biz/duck-and-waffle-london-3?osq=Restaurants
print(url)
#Function that will do actual scraping job
def scrape(ur):
    html=urllib.request.urlopen(ur).read()
    soup=BeautifulSoup(html,"lxml")

    title=soup.select(‘.biz-page-title‘)
    saddress=soup.select(‘.street-address‘)
    phone=soup.select(‘.biz-phone‘)

    if title:
        print("Title:",title[0].getText().strip())
    if saddress:
        print("Streeet Address:",saddress[0].getText().strip())
    if phone:
        print("Phone number:",phone[0].getText().strip())
    print("---------------------")
    threadlist=[]
    i=0
    #Making thereads to perform scraping
    while(i<len(url)):
        t=Thread(target=scrape,args=(url[i],))
        t.start()
        threadlist.append(t)
        i=i+1
    for t in threadlist:
        t.join()

  

 
时间: 2024-10-08 19:35:01

python BS4获取href网址的相关文章

小例子-使用JS/JQ获取a标签的href网址

最初的想法只是想要添加一个点击事件就可以跳到设定的窗口. 本身就是把window.location.href = href添加进事件里面就可以解决了.后面自己把自己搞糊涂了. 这里主要是说使用JS和JQ获取a标签的href网址,使用比较简单,基本就是拿来用就可以了. 先看看html部分的代码 <div> <a id="demo" href="https://www.baidu.com"></a> </div> <

【python】获取51cto博客的文章列表

python的正则与网页操作练习二: import re import urllib.request #51cto urlcode=gb18030 class down51web: s_url='' s_blogid='' s_blogpages='' s_html='' s_code='' def __init__(self,url,code): self.s_url=url self.s_code=code def get_html(self): self.s_html=urllib.req

使用python+xpath获取下载链接

使用python+xpath 获取https://pypi.python.org/pypi/lxml/2.3/的下载链接: 使用requests获取html后,分析html中的标签发现所需要的链接在<table class="list" >...</table> 中 然后分别获却<tr class="odd"> 和<tr class="even">中的内容 ,使用xpath时可以写成xpath('/

用javascript获取url网址信息

用javascript获取url网址信息 <script type="text/javascript">document.write("location.host="+location.host+"<br>");document.write("location.hostname="+location.hostname+"<br>");document.write(&quo

Python脚本获取参数的方式

在运维过程中,常常需要自己写脚本,而python往往是最佳的选择.那么怎么获取python脚本的命令行参数呢,例如: python demo.py a b c 怎么获取命令行参数,a,b,c 呢?可以通过sys库里面的argv来实现, 例如: $ cat demo.py #-*- coding: UTF-8 -*- import os import sys def demo(): print sys.argv print len(sys.argv) for i in range(len(sys.

Python下获取当前目录中的所有子目录

p是输入目录 代码如下 import osdef getDirList(p):  #      b = [];    filepath=p    if filepath=="":        return b    filepath = filepath.replace( "/","\\")    if filepath[ -1] != "\\":        filepath = filepath+"\\&qu

如何用js得到当前页面的url信息方法(JS获取当前网址信息)

设置或获取对象指定的文件名或路径. alert(window.location.pathname) 设置或获取整个 URL 为字符串. alert(window.location.href); 设置或获取与 URL 关联的端口号码. alert(window.location.port) 设置或获取 URL 的协议部分. alert(window.location.protocol) 设置或获取 href 属性中在井号“#”后面的分段. alert(window.location.hash) 设

Python中获取异常(Exception)信息

异常信息的获取对于程序的调试非常重要,可以有助于快速定位有错误程序语句的位置.下面介绍几种python中获取异常信息的方法,这里获取异常(Exception)信息采用try...except...程序结构.如下所示 try: ... except Exception as e: ... 1.str(e) 返回字符串类型,只给出异常信息,不包括异常信息的类型,如1/0的异常信息 'integer division or modulo by zero' 2.repr(e) 给出较全的异常信息,包括异

python脚本——获取系统当前时间与前一天的时间

python脚本中很多时候需要自动获取系统的当前时间和前一日的时间,如果为了获得前一日的时间,只是单纯的取出当前的系统时间(字符串类型),转为整型之后减1,再转换为字符串类型,是不可行的,当月初的时间将会出现0天,比如12月1日会变成12月0日,合理的做法应当让其自动向前推一天. 如下: 1.python里获取当前时间有一个time属性import timeTIME_NOW = time.strftime('%Y%m%d') 或TIME_NOW = time.strftime("%Y%m%d&q