我正在尝试在HTML文档中搜索文章链接,将它们存储到列表中,然后使用该列表分别搜索每个文章的标题。
答案 0 :(得分:1)
它可能不是OP的直接答案,但不应被视为偏离主题:您不应该解析html数据的网页。
html网页未针对大量请求进行优化,尤其是来自浏览器的请求。大量生成的流量可能导致服务器过载并触发DDOS。
因此,您需要尝试找到任何可用的API以使您的网站感兴趣,并且只有在找不到相关内容的情况下,使用使用请求缓存来解析Web内容以不使目标资源超载。
第一眼看,The Guardian
有Open API documentation如何使用。
使用该API,您可以以简单的方式处理网站内容,使您更有趣地处理有趣的请求,并且无需解析即可获得答案。
例如,按标签搜索"技术" api output:
from urllib.request import urlopen, URLError, HTTPError
import json
import sys
def safeprint(s):
try:
print(s)
except UnicodeEncodeError:
if sys.version_info >= (3,):
print(s.encode('utf8').decode(sys.stdout.encoding))
else:
print(s.encode('utf8'))
url = "http://content.guardianapis.com/search?q=technology&api-key=test"
try:
content = urlopen(url).read().decode("utf-8")
json_data = json.loads(content)
if "response" in json_data and "results" in json_data["response"]:
for item in json_data["response"]["results"]:
safeprint(item["webTitle"])
except URLError as e:
if isinstance(e, HTTPError):
print("Error appear: " + str(e))
else:
raise e
使用这种方式,你可以毫不费力地浏览所有出版物。
答案 1 :(得分:-1)
只需使用/**
* @Route("/cart/update", name="cart_update")
*/
public function cartUpdateAction( Request $request )
{
$response = new JsonResponse();
$requestData = $request->request->all();
$productid = $requestData['product'];/** first put all validations not empty/ is numeric and exists in your db etc*/
$quantity = $requestData['quantity'];/** first put all validations not empty/ is numeric etc */
/** if all is good then put your logic*/
$product = $em->getRepository('MpShopBundle:Product')->find($productid);
$qtyAvailable = $product->getStock();
$session = $this->getRequest()->getSession();
$cart = $session->get('cart', array());
if ( $qtyAvailable > $cart[ $productid ] ) {
$cart[ $productid ] = $cart[ $productid ] + 1;
$response->setData(array('success'=>true,'message'=>'Qunatity increased'));
} else {
$response->setData(array('success'=>false,'message'=>'Out of stock'));
}
return $response;
}
解析HTML并在每个页面中找到标题标记:
{% block javascripts %}
{# Le Javascript #}
{% javascripts
'bundles/mpFrontend/assets/js/jquery-1.11.2.min.js'
'Mp/ShopBundle/Resources/js/scripts.js'
%}
<script src="{{ asset_url }}"></script>
{% endjavascripts %}